unittest系列之unittest和pytest差异比较
unittest 是python 的[单元测试]框架,unittest 单元测试提供了创建测试用例,测试套件以及批量执行的方案。相比于之前的pytest框架而言,unittest 在安装pyhton 以后就直接自带了,直接import unittest 就可以使用,不需要额外进行安装。
1 用例编写规则
unittest框架下测试用例的规则(耦合)
测试文件必须导包
测试类必须继承unittest.Testcase
测试方法必须以test_开头
pytest框架下测试用例的规则
测试文件必须以test_开头
测试类名必须以Test开头
测试方法必须以test_开头
2 测试用例夹具(前后置、钩子)
unittest
setUp/tearDown 测试用例之前和之后执行
setUpClass/tearDownClass 测试类之前和之后执行
setUpModule/tearDownModule 测试模块之前和之后执行(几乎不用)
pytest
setup/teardown 测试用例之前和之后执行
settp_class/teardown_class 测试类之前和之后执行
setup_module/teardown_Module 测试模块之前和之后执行
@pytest.fixture() 实现部分前后置
3 断言
unittest:self.assertEqual()、self.assertIn()、self.assertTrue()等丰富的断言
方法 | 检查的内容 |
---|---|
self.assertEqual(a,b) | a==b |
self.assertNotEqual(a,b) | a!=b |
self.assertTrue(a) | bool(a) is True |
self.assertFalse(a) | bool(a) is False |
self.assertIs(a,b) | a is b |
self.assertIsNot(a,b) | a is not b |
self.assertIsNone(a) | a is None |
self.assertIsNotNone(a) | a is not None |
self.assertIn(a,b) | a in b |
self.assertNotIn(a,b) | a not in b |
self.assertIsInstance(a,b) | isinstance(a,b) |
self.assertNotIsInstance(a,b) | not isinstance(a,b) |
self.assertGreater(a,b) | a>b |
self.assertGreaterEqual(a,b) | a>=b |
self.assertLess(a,b) | a<b |
self.assertLessEqual(a,b) | a<=b |
self.assertDictEqual(a,b) | 字典相等 |
self.assertListEqual(a,b) | 列表相等 |
self.assertTupleEqual(a,b) | 元组相等 |
self.assertSetEqual(a,b) | 集合相等 |
pytest:只有python自带的assert断言
4 测试报告
unittest:HtmlTestrunner.py
pytest:pytest-html插件、allure插件
5 失败用例重跑
unittest不支持失败重跑
pytest:pytest-rerunfailures插件
6 用例的参数化
unittest:ddt
pytest:@pytest.mark.parametrie()
转载自:https://juejin.cn/post/7087373363547078664