Unittest vs Pytest
主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较unittest和pytest的区别:
用例编写规则
用例前置与后置条件
断言
测试报告
失败重跑机制
参数化
用例分类执行
如果不好看,可以看下面表格:
总体来说,unittest用例格式复杂,兼容性无,插件少,二次开发方便。pytest更加方便快捷,用例格式简单,可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如flask插件,可用于用例出错重跑,还有xdist插件,可用于设备并行执行,效率更高。
实例演示
讲了七大区别,总要演示一下具体实例,用事实说话。
前后置区别
这里抽用例前置与后置的区别来讲,先看unittest的前后置使用:
import unittest
class TestFixtures01(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_001(self):
print("测试用例001")
class TestFixtures02(unittest.TestCase):
def test_002(self):
print("测试类2")
# 每个模块执行前执行
def setUpModule():
"""
在所有测试类在调用之前会被执行一次,函数名是固定写法,会被unittest框架自动识别
"""
print('集成测试 >>>>>>>>>>>>>>开始')
def tearDownModule():
print("集成测试 >>>>>>>>>>>>>>结束")
if __name__ == '__main__':
unittest.main()
运行结果:
从结果上得知, 三个方法的逻辑优先级: setUp()&tearDown() < setUpClass()&tearDownClass() < setUpModule()&tearDownModule()
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理