unittest之入门
介绍
unittest是python的单元测试框架。
测试脚手架
test fixture表示为了开展一项或多项测试所需要进行的准备工作,以及所有相关的清理操作。举个例子,这可能包含创建临时或代理的数据库、目录,再或者启动一个服务器进程。
测试用例
一个测试用例是一个独立的测试单元。它检查输入特定的数据时的响应。 unittest提供一个基类:TestCase ,用于新建测试用例。
测试套件
test suite是一系列的测试用例,或测试套件,或两者皆有。它用于归档需要一起执行的测试。
测试运行器
test runner是一个用于执行和输出测试结果的组件。这个运行器可能使用图形接口、文本接口,或返回一个特定的值表示运行测试的结果。
需要遵守的规则
- 测试文件必须导入
unittest。 - 测试类必须继承自
unittest.TestCase。 - 测试方法名必须以
test开头。
断言的语法
假设:a='zhenzi0322',b='ZHENZI0322'。其中假就是False,真就是True。通过的意思就是测试通过。反之测试不通过。
| 断言 | 描述 | 示例 |
|---|---|---|
assertFalse |
测试某个值是否为假。 | assertFalse(a.isupper())通过。 |
assertTrue |
测试某个值是否为真。 | assertTrue(b.islower())不通过。 |
assertEqual |
测试两个值是否相等。 | assertEqual(a, b)不通过。 |
简单示例
test01.py文件内容如下:
import unittest
class TestStringMethods(unittest.TestCase):
def test_login(self):
print('执行了test_login')
a = 'zhenzi0322'.upper()
b = 'ZHENZI0322'
self.assertEqual(a, b)
def testDemo(self):
print("执行了testDemo")
a = 'zhenzi0322'
self.assertTrue(a.isupper())
if __name__ == '__main__':
unittest.main()
运行test01.py文件后输出如下:
F.
======================================================================
FAIL: testDemo (__main__.TestStringMethods)
----------------------------------------------------------------------
Traceback (most recent call last):
File "F:/Python/opencv_demo/test2.py", line 15, in testDemo
self.assertTrue(a.isupper()) # 测试变量a的值是否是全大写的
AssertionError: False is not true
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)
执行了testDemo
执行了test_login
解释:
上面的测试类中的有一个地方没有测试通过,那就是在testDemo这个方法中的测试内容没有通过。原因是因为a变量的值不是大写的字母造成的。如果把testDemo方法中的a变量的值改成ZHENZI0322再运行test01.py就会发现测试通过了。输出如下:
..
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
执行了testDemo
执行了test_login

浙公网安备 33010602011771号