一、官方文档:
https://docs.python.org/zh-cn/3/library/unittest.html
二、unittest使用
-
unittest 使用规范
需要导入unittest包 测试类必须继承unittest.TestCase类 测试方法必须要以test开头 测试用例名称不能相同,相同的情况可能出现用例遗漏执行的情况 ddt使用事项见下方
-
unittest中提供了前置、后置处理,及用例跳过功能,直接见下面代码【新建Mytest1.py】
import unittest # 这个Mytest1 可以称为 test case(测试单元),包含测试前,测试,测试后的执行顺序 class Mytest1(unittest.TestCase): def setUp(self) -> None: """ 当前类下,每条用例的前置 """ print("====setUp") def tearDown(self) -> None: """ 当前类下,每条用例的后置 """ print("====tearDown") @classmethod def setUpClass(cls) -> None: """ 当前类下,第一个执行,只执行一次 """ print("====setUpClass") @classmethod def tearDownClass(cls) -> None: """ 当前类下,最后一个执行,只执行一次 """ print("====tearDownClass") def test_one(self): """ 测试用例,需要以test开头 """ print("测试用例-test_one") self.assertEqual(1, 2) def testTwo(self): """ 测试用例,需要以test开头 """ print("测试用例-testTwo") self.assertEqual(1, 1) def tthree(self): """ 未以test开头,无法加载 """ print("测试用例-tthree") @unittest.skip("直接跳过") def test_four(self): """ 需要跳过的用例 测试用例,需要以test开头 """ print("测试用例-test_one") self.assertEqual(1, 2) @unittest.skipIf(1 == 1, "条件为true跳过") def test_five(self): """ 需要跳过的用例 测试用例,需要以test开头 """ print("需要跳过的用例") self.assertEqual(1, 2) @unittest.skipUnless(1 > 2, "条件为false跳过") def test_six(self): """ 需要跳过的用例 测试用例,需要以test开头 """ print("需要跳过的用例") self.assertEqual(1, 2) if __name__ == '__main__': unittest.main(verbosity=2) """ 0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共10个 失败2 成功8 1 (默认模式): 非常类似静默模式 只是在每个成功的用例前面有个“.” 每个失败的用例前面有个 “F” 2 (详细模式):测试结果会显示每个测试用例的所有相关的信息 """ # 命令行方式 # python -m unittest Mytest1.py
点击查看运行结果
====setUpClass ====setUp 测试用例-testTwo ====tearDown ====setUp 测试用例-test_one ====tearDown ====tearDownClass testTwo (__main__.Mytest1) ... ok test_five (__main__.Mytest1) ... skipped '条件为true跳过' test_four (__main__.Mytest1) ... skipped '直接跳过' test_one (__main__.Mytest1) ... FAIL test_six (__main__.Mytest1) ... skipped '条件为false跳过' ====================================================================== FAIL: test_one (__main__.Mytest1) ---------------------------------------------------------------------- Traceback (most recent call last): File "D:/WorkSpace/PythonWorkSpace/test_unit/Mytest1.py", line 45, in test_one self.assertEqual(1, 2) AssertionError: 1 != 2 ---------------------------------------------------------------------- Ran 5 tests in 0.000s FAILED (failures=1, skipped=3)
-
关于跳过及断言的方法可以参考顶部官方文档
- 关于自动化代码运行有两种方式:编辑器 和 命令行(命令行更加详细的指令可以参考官方文档)
- 注意:前两张图是通过编辑器运行的,操作方式不同展示效果不同,注意区分
-