likes
comments
collection
share

unittest系列之unittest和pytest差异比较

作者站长头像
站长
· 阅读数 18

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
评论
请登录