pytest 测试发现约定
当前文件路径
1.如未指定任何参数,则收集从testpaths (如果已配置:可以通过pytest.ini配置文件发现路径,配置文件只在当前目录下生效),或当前目录开始。 默认条件下通过配置文件指定路径后执行结果 pytest.ini文件
[pytest]
testpaths = testing doc
注意格式:用例发现路径用空格隔开,关键字不能写错
2.命令行参数可以在目录,文件名或者节点ID的任何组合中使用。
用例文件
def test_02():
print('testing目录下的test02')
assert 1 == 1
def test_04():
print('testing目录下的test04')
assert 1 == 1
用例执行文件:结合用例文件路径和节点,指定执行一条用例
if __name__ == '__main__':
# pytest.main(['-s']) # '-s' 表示输出打印信息,pytest默认是不输出打印信息的
pytest.main(['-s','./testing/test_pytest.py::test_04'])
3.递归到目录,除非他们匹配 norecursedirs
忽略所有test开头的用例
pytest.ini文件
[pytest]
norecursedirs = test*
4.在当前目录及其子目录中运行所有格式为test_.py或者_test.py文件 5.从这些文件中收集测试项目。
1、在类之外拥有test前缀的测试函数或方法
2、在拥有Test前缀中的测试类(不含__init__方法)中的拥有test前缀的测试函数或方法
如果在测试类中加了构造函数会报错如下:
testing\test_pytest.py:28
D:\pythonwork\cemaxueyuan\CMVIP4\ADEMO\pytest_discover\testing\test_pytest.py:28: PytestCollectionWarning: cannot collect test class 'TestCase01' because it has a __init__ constructor (from: testing/test_pytest.py)
class TestCase01:
-- Docs: https://docs.pytest.org/en/stable/warnings.html
6.可以自定义测试发现规则,比如忽略掉一些目录
if __name__ == '__main__':
# 自定义测试发现规则,比如忽略掉一些目录
pytest.main(['-s', '--ignore=testing/', '--ignore=doc/'])
7.pytest也可以发现使用标准的unittest.TestCase子类技术的测试用例(完全兼容unittest)
|