From: http://www.testclass.net/pytest/multiple_tests/
背景
在现实的测试活动中,我们经常会定义多个用例文件,用来实现业务逻辑或其他逻辑上用例的物理分隔,比如
login_test.py # 登录相关功能的测试用例
cart_test.py # 购物车相关功能的测试用例
checkout_test.py # 结算相关功能的用例
order_test.py # 订单相关功能的用例
使用pytest可以很方便的执行批量执行一组文件中定义的用例。
潜规则
在批量执行用例之前,我们需要了解一下pytest的潜规则,注意,由于pytest可以支持丰富的定制选项,下面的潜规则是在没有定制的默认情况下的缺省规则
- pytest会找当前以及递查找子文件夹下面所有的
test_*.py
或*_test.py
的文件,把其当作测试文件 - 在这些文件里,pytest会收集下面的一些函数或方法,当作测试用例
- 不在类定义中的以
test_
开头的函数或方法 - 在以
Test
开头的类中(不能包含__init__
方法),以test_
开头的方法
- 不在类定义中的以
- pytest也支持unittest模式的用例定义
实例
新建test_calc.py
文件,与上一节的test_quick_start.py
放在同一文件夹下,敲入下面的内容
def add(x, y):
return x + y
def test_add():
assert add(1, 0) == 1
assert add(1, 1) == 2
assert add(1, 99) == 100
现在当前文件夹下应该有2个文件
test_calc.py
test_quick_start.py
运行
在当前文件夹敲下面的命令
pytest
结果大致应该如下所示
$ pytest
========================================================================= test session starts =========================================================================
platform darwin -- Python 2.7.12, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /Users/easonhan/code/testclass.net/src/pytest, inifile:
collected 2 items
test_calc.py .
test_quick_start.py .
====================================================================== 2 passed in 0.01 seconds =======================================================================
总结
上面的例子里
- 所有以test_开头的py文件都被当成了测试文件
- 所有测试文件中以test开头的方法被当成了测试用例执行