目录结构
.
├── __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 ====================================================
可以输出用例详细的执行信息,比如用例所在的文件及用例名称
pytest -v
================================================== test session starts ===================================================
platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /media/_dde_data/python
collected 4 items
test_001.py::test_one PASSED [ 25%]
test_001.py::test_two PASSED [ 50%]
test_001.py::Test_Class::test_three PASSED [ 75%]
test_002.py::test_1 PASSED [100%]
=================================================== 4 passed in 0.02s ====================================================
可以输出用例中的调试信息,比如print打印信息等
pytest -s test_002.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 1 item
test_002.py test_1
.
=================================================== 1 passed in 0.01s ====================================================
执行用例中包含“关键字”的用例
pytest -vk "three"
================================================== test session starts ===================================================
platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /media/_dde_data/python
collected 4 items / 3 deselected / 1 selected
test_001.py::Test_Class::test_three PASSED [100%]
============================================ 1 passed, 3 deselected in 0.01s =============================================
执行带有特定标记(@pytest.mark.‘标记’)的测试用例
新增test_003.py
#!/usr/bin/python3
#-*- conding:utf-8 -*-
import pytest
def test_01():
print(‘test_01‘)
@pytest.mark.aaa
def test_02():
print(‘test_02‘)
class Test_Class():
@pytest.mark.aaa
def test_03(self):
print(‘test_03‘)
pytest -vm "aaa"
================================================== test session starts ===================================================
platform linux -- Python 3.5.3, pytest-5.4.2, py-1.8.1, pluggy-0.13.1 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /media/_dde_data/python
collected 7 items / 5 deselected / 2 selected
test_003.py::test_02 PASSED [ 50%]
test_003.py::Test_Class::test_03 PASSED [100%]
==================================================== warnings summary ====================================================
test_003.py:9
/media/_dde_data/python/test_003.py:9: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
@pytest.mark.aaa
test_003.py:14
/media/_dde_data/python/test_003.py:14: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
@pytest.mark.aaa
-- Docs: https://docs.pytest.org/en/latest/warnings.html
====================================== 2 passed, 5 deselected, 2 warnings in 0.02s =======================================
遇到错误时停止
新增test_004.py
#!/usr/bin/python3
#-*- conding:utf-8 -*-
def test_a():
print("test_a")
assert 1 == 3
def test_b():
print(‘test_b‘)
assert 2 == 4
def test_c():
print(‘test_c‘)
assert 3 == 3
pytest -x test_004.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_004.py F
======================================================== FAILURES ========================================================
_________________________________________________________ test_a _________________________________________________________
def test_a():
print("test_a")
> assert 1 == 3
E assert 1 == 3
test_004.py:6: AssertionError
-------------------------------------------------- Captured stdout call --------------------------------------------------
test_a
================================================ short test summary info =================================================
FAILED test_004.py::test_a - assert 1 == 3
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=================================================== 1 failed in 0.17s ====================================================
pytest --maxfail=2 test_004.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_004.py FF
======================================================== FAILURES ========================================================
_________________________________________________________ test_a _________________________________________________________
def test_a():
print("test_a")
> assert 1 == 3
E assert 1 == 3
test_004.py:6: AssertionError
-------------------------------------------------- Captured stdout call --------------------------------------------------
test_a
_________________________________________________________ test_b _________________________________________________________
def test_b():
print(‘test_b‘)
> assert 2 == 4
E assert 2 == 4
test_004.py:11: AssertionError
-------------------------------------------------- Captured stdout call --------------------------------------------------
test_b
================================================ short test summary info =================================================
FAILED test_004.py::test_a - assert 1 == 3
FAILED test_004.py::test_b - assert 2 == 4
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 2 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
=================================================== 2 failed in 0.17s ====================================================
简化控制台的输出
pytest -q test_001.py
... [100%]
3 passed in 0.01s
罗列出当前目录下所有的测试模块,测试类及测试函数
pytest --collect-only
================================================== 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 10 items
<Module test_001.py>
<Function test_one>
<Function test_two>
<Class Test_Class>
<Function test_three>
<Module test_002.py>
<Function test_1>
<Module test_003.py>
<Function test_01>
<Function test_02>
<Class Test_Class>
<Function test_03>
<Module test_004.py>
<Function test_a>
<Function test_b>
<Function test_c>
==================================================== warnings summary ====================================================
test_003.py:9
/media/_dde_data/python/test_003.py:9: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
@pytest.mark.aaa
test_003.py:14
/media/_dde_data/python/test_003.py:14: PytestUnknownMarkWarning: Unknown pytest.mark.aaa - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
@pytest.mark.aaa
-- Docs: https://docs.pytest.org/en/latest/warnings.html
================================================== 2 warnings in 0.02s ===================================================
当一次用例执行完成后,如果其中存在失败的测试用例,那么我们可以使用此命令重新运行失败的测试用例
pytest test_004.py
============================================== 2 failed, 1 passed in 0.18s ===============================================
2个失败一个成功
pytest --lf
只会重新执行失败的2个用例
=================================================== 2 failed in 0.19s ====================================================
屏蔽测试用例输出的回溯信息,可以简化失败用例的输出信息。style可以时‘auto‘, ‘long‘, ‘short‘, ‘no‘, ‘line‘, ‘native‘
pytest --tb=short test_004.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_004.py FF. [100%]
======================================================== FAILURES ========================================================
_________________________________________________________ test_a _________________________________________________________
test_004.py:6: in test_a
assert 1 == 3
E assert 1 == 3
-------------------------------------------------- Captured stdout call --------------------------------------------------
test_a
_________________________________________________________ test_b _________________________________________________________
test_004.py:11: in test_b
assert 2 == 4
E assert 2 == 4
-------------------------------------------------- Captured stdout call --------------------------------------------------
test_b
================================================ short test summary info =================================================
FAILED test_004.py::test_a - assert 1 == 3
FAILED test_004.py::test_b - assert 2 == 4
============================================== 2 failed, 1 passed in 0.19s ===============================================
pytest --tb=no test_004.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_004.py FF. [100%]
================================================ short test summary info =================================================
FAILED test_004.py::test_a - assert 1 == 3
FAILED test_004.py::test_b - assert 2 == 4
============================================== 2 failed, 1 passed in 0.18s ===============================================
pytest --tb=line test_004.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_004.py FF. [100%]
======================================================== FAILURES ========================================================
/media/_dde_data/python/test_004.py:6: assert 1 == 3
/media/_dde_data/python/test_004.py:11: assert 2 == 4
================================================ short test summary info =================================================
FAILED test_004.py::test_a - assert 1 == 3
FAILED test_004.py::test_b - assert 2 == 4
============================================== 2 failed, 1 passed in 0.18s ===============================================
原文:https://www.cnblogs.com/jingxindeyi/p/13063149.html