pytest
|
unitest(Python内置库)
| |
相同点
|
测试用例组织:都支持以类和方法的形式组织测试用例;
断言:都提供了断言机制;
测试发现:都能自动发现并执行特定模式的测试用例;
测试夹具:支持测试前后的设置和清理操作(如setUp、tearDown);
异常处理:都能捕获和报告测试中的异常;
| |
不同点-- 简洁性
|
语法更简洁。不需要继承任何类,也不需要特定命名的方法来创建测试用例。
|
遵循xUnit风格的测试,通常需要继承
unittest.TestCase
类,并且需要按照特定的命名约定(如方法名以
test
开头)来编写测试用例
|
不同点--断言
|
更丰富的断言表达式,错误信息通常更加详细 assert语句
|
使用了一组较为传统的断言方法,如
assertEqual
,
assertTrue
等。
|
不同点--夹具(
Fixtures)
|
更加灵活和强大,支持模块级别、类级别、会话级别的夹具,并且可以通过装饰器很容易地重用。
|
功能相对较为简单,通常通过
setUp
和
tearDown
方法实现
|
不同点--插件系统
|
有一个广泛的插件生态系统,可以很容易地扩展其功能。
|
扩展性较弱,虽然也可以通过模块扩展,但没有
pytest
那样活跃的插件社区。
|
不同点--参数化测试
|
原生支持参数化测试,可以用一种简洁的方式运行多组输入的测试。
|
需要更多的样板代码来实现相同的功能,或者依赖第三方库如
ddt
。
|
不同点--运行方式
|
可以直接运行任何Python文件,无需任何特殊的类或方法。
|
通常需要通过其特定的测试发现机制来运行测试。
|
不同点--标记和选择性测试
|
支持通过标记(markers)来过滤要运行的测试
|
没有内置的标记系统,但可以通过自定义测试加载器或测试套件来选择性地运行测试。
|
10-02