Unittest简单介绍
pytest和unittest框架的区别
1.用例设计对比
1.1 unittest
a. 测试类必须继承unittest.TestCase
b. 测试函数必须以"test_"开头
c. 测试类必须有unittest.main()方法
1.2 pytest
a. 测试文件的文件名必须以"test"开头,或者以"test"结尾
b. 测试类命名必须以"Test"开头
c. 测试函数名必须以"test"开头
d. 测试类里面不能使用 __init__ 方法
总结:pytest是基于unittest衍生出来的新的测试框架,使用起来相对于unittest来说更简单、效率来说更高,pytest兼容unittest测试用例,但是反过来unittest不兼容pytest,所以说pytest的容错性更好一些!在使用交互逻辑上面pytest比unittest更全一些!
2.断言对比
2.1unittest
assertEqual(a, b) # 判断a和b是否相等
2.2pytest
pytest只需要用assert 来断言就行,assert 后面加需要断言的条件就可以了,例如:assert a = = b # 判断a是否等于b
总结:从断言上面来看,pytest的断言比unittest要简单些,unittest断言需要记很多断言格式,pytest
只有assert一个表达式,用起来比较方便
3.前置和后置函数
unittest的前置和后置没有pytest的前置后置灵活,unittest的包括类和方法级别的,pytest包括函数级别的,类级别的,方法级别的,模块级别的,除此之外还可以通过@pytest.fixture()去进行单独定义。
4.参数化
4.1 unittest:需要借助第三方包,ddt来进行实现
4.2 pytest:通过装饰器@pytest.mark.parametrize来实现
5.报告
5.1 unittest :通过HTMLTestRunner生成报告
5.2 pytest:
a. 通过pytest-html生成html格式报告
b. 通过allure生成方案(很详细)