pytest入门
一、安装pytest
pip install pytest
二、运行pytest
pytest [options] [file_or_dir] [file_or_dir] [...]
如果不提供任何参数,pytest会在当前目录以及子目录下寻找测试文件,然后运行测试用例,如果提供了文件名或目录名,pytest会诸葛查找并运行所有的测试用例。
运行规则
- 文件名以test_.py文件和_test.py
- 以test_开头的函数
- 以Test开头的类
- 以test_开头的方法
- 所有的包pakege必须要有__init__.py文件
运行
目录结构
.
├── __init__,py
├── test_001.py
└── test_002.py
test_001.py
#!/usr/bin/python3
#-*- conding:utf-8 -*-
def test_one():
print('test_one')
def test_two():
print('test_two')
class Test_Class():
def test_three(self):
print('test_three')
test_2.py
#!/usr/bin/python3
#-*- conding:utf-8 -*-
def test_1():
print('test_1')
执行当前目录下所有的测试用例
pytest
================================================== test session starts ===================================================
platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
rootdir: /media/_dde_data/python
collected 4 items
test_001.py ... [ 75%]
test_002.py . [100%]
=================================================== 4 passed in 0.02s ====================================================
执行指定模块中的所有测试用例
pytest test_one.py
================================================== test session starts ===================================================
platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1
rootdir: /media/_dde_data/python
collected 3 items
test_001.py ... [100%]
=================================================== 3 passed in 0.02s ====================================================
执行指定模块中的指定测试用例
-
指定类
pytest test_001.py::Test_Class
platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 rootdir: /media/_dde_data/python collected 1 item test_001.py . [100%] =================================================== 1 passed in 0.01s ====================================================
-
指定类中的指定方法
pytest test_001.py::Test_Class::test_three
================================================== test session starts =================================================== platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 rootdir: /media/_dde_data/python collected 1 item test_001.py . [100%] =================================================== 1 passed in 0.01s ====================================================
-
指定函数
pytest test_001.py::test_two
================================================== test session starts =================================================== platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 rootdir: /media/_dde_data/python collected 1 item test_001.py . [100%] =================================================== 1 passed in 0.01s ====================================================
运行结果
- PASSED(.):测试通过
- FAILED(F):测试失败(也有可能时XPASS状态和strict选项冲突造成的失败)
- SKIPPED(s):测试未被执行。指定测试跳过执行,可以将测试用例标记为@pytest.mark.skip(),或这@pytest.mark.skipif()
- xfail(x):预期测试失败,并且确实失败。使用@pytest.mark.xfail()标记指定认为回失败的测试用例
- ERROR(E):测试用例之外的代码触发了异常,可能由fixture引起,也可能由hook函数引起。