IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> Python——单元测试的实现 -> 正文阅读

[开发测试]Python——单元测试的实现

摘要

单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。在软件开中的测试是很重要的一部分。

python测试相关库

  • unittest,内置库,模仿PyUnit写的,简洁易用,缺点是比较繁琐。
  • nose,测试发现,发现并运行测试。
  • pytest,笔者目前喜欢用这个,写起来很方便,并且很多知名开源项目在用,推荐。
  • mock, 替换掉网络调用或者 rpc 请求等

python unittest测试实践

import unittest

class TestStringMethods(unittest.TestCase):

    def test_upper(self):
        function_vale='foo'.upper()#表示的调用的API的返回的结果
        test_value='FOO'#测试用例的数据指:有可能是自己构造的,有可能是从别的地方抓取的结果
        self.assertEqual(function_vale, test_value)#表示的

    def test_isupper(self):
        function_vale1='FOO'
        function_vale2 = 'foo'
        self.assertTrue(function_vale1.isupper())
        self.assertFalse(function_vale2.isupper())

    def test_split(self):
        function_value= 'hello world'
        test_value=['hello', 'world']
        self.assertEqual(function_value.split(), test_value)
        # check that s.split fails when the separator is not a string
        with self.assertRaises(TypeError):
            function_value.split(2)

if __name__ == '__main__':
    unittest.main()

继承?unittest.TestCase?就创建了一个测试样例。上述三个独立的测试是三个类的方法,这些方法的命名都以?test?开头。 这个命名约定告诉测试运行者类的哪些方法表示测试。

每个测试的关键是:调用?assertEqual()?来检查预期的输出; 调用?assertTrue()?或?assertFalse()?来验证一个条件;调用?assertRaises()?来验证抛出了一个特定的异常。使用这些方法而不是?assert?语句是为了让测试运行者能聚合所有的测试结果并产生结果报告。

通过?setUp()?和?tearDown()?方法,可以设置测试开始前与完成后需要执行的指令。 在?组织你的测试代码?中,对此有更为详细的描述。

...
----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK

在调用测试脚本时添加?-v?参数使?unittest.main()?显示更为详细的信息,生成如以下形式的输出:

test_isupper (__main__.TestStringMethods) ... ok
test_split (__main__.TestStringMethods) ... ok
test_upper (__main__.TestStringMethods) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.001s

OK

setUp与tearDown

可以在单元测试中编写两个特殊的setUp()和tearDown()方法。这两个方法会分别在每调用一个测试方法的前后分别被执行。

setUp()和tearDown()方法有什么用呢?设想你的测试需要启动一个数据库,这时,就可以在setUp()方法中连接数据库,在tearDown()方法中关闭数据库,这样,不必在每个测试方法中重复相同的代码:

class TestDict(unittest.TestCase):

    def setUp(self):
        print('setUp...')

    def tearDown(self):
        print('tearDown...')

使用Pytest库进行测试?

import pytest
def add(a, b):
    assert all([isinstance(a, int), isinstance(b, int)])
    return a + b


def test_add():
    assert add(1, 2) == 3
    assert isinstance(add(1, 2) , int)
    with pytest.raises(Exception):    # test exception
        add('1', 2)

在运行test的时候如果是预见到这个错误的测试案例,那么久不会接下来运行新的测试案例了。

参考文章

https://docs.python.org/zh-cn/3/library/unittest.html

https://zhuanlan.zhihu.com/p/29968920

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:25:05  更:2021-08-20 15:25:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:23:12-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码