1 PyTest自学 - pytest的各种执行方式
- 不带任何参数执行
在命令行下将目录切换到测试用例所在目录,执行pytest
cmd
tyy@DESKTOP-G7V9IT0 ~
$ cd /cygdrive/d/TYYSOFT/Study/Python/pytest
tyy@DESKTOP-G7V9IT0 /cygdrive/d/TYYSOFT/Study/Python/pytest
$ pytest
- 带用例文件名执行
cmd
$ pytest test_feature_subfeature_sample_002.py
- 执行指定目录下的文件
cmd
pytest ./pytest/
注意:只支持执行子目录下的文件夹,不支持绝对路径。
-
执行指定文件中的指定函数
$ pytest test_feature_subfreature_sample_001_001.py::test_feature_subfeature_plus_001_001
输出:
======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 1 item
test_feature_subfreature_sample_001_001.py . [100%]
======================================== 1 passed in 0.01s ========================================
- 执行类中的所有用例
cmd
$ pytest test_feature_subfeature_sample_002.py::TestGroup
输出:
cmd
======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 2 items
test_feature_subfeature_sample_002.py .F [100%]
============================================ FAILURES =============================================
________________________ TestGroup.test_feature_subfeature_sample_002_002 _________________________
self = <test_feature_subfeature_sample_002.TestGroup object at 0x0000027875F2A350>
def test_feature_subfeature_sample_002_002(self):
> assert 6 + 3 == 7
E assert (6 + 3) == 7
test_feature_subfeature_sample_002.py:9: AssertionError
===================================== short test summary info =====================================
FAILED test_feature_subfeature_sample_002.py::TestGroup::test_feature_subfeature_sample_002_002 - as
sert (6 + 3) == 7
=================================== 1 failed, 1 passed in 0.07s ===================================
- 执行指定类中的指定用例
cmd
$ pytest test_feature_subfeature_sample_002.py::TestGroup::test_feature_subfeature_sample_002_001
输出:
cmd
======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 1 item
test_feature_subfeature_sample_002.py . [100%]
======================================== 1 passed in 0.01s ========================================
- 执行多组测试数据
使用装饰器@pytest.mark.parametrize
可以给测试用例传递多组测试数据,每组测试数据会单独执行。
py
import pytest
@pytest.mark.parametrize("input1, input2, expected", [
(1, 2, 3),
(4, 5, 7),
(-1, 1, 0),
(0, 0, 0)
])
def test_addition(input1, input2, expected):
assert input1 + input2 == expected
执行结果
cmd
$ pytest test_feature_subfeature_withdata_001.py
======================================= test session starts =======================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: D:\TYYSOFT\Study\Python\pytest
collected 4 items
test_feature_subfeature_withdata_001.py .F.. [100%]
============================================ FAILURES =============================================
______________________________________ test_addition[4-5-7] _______________________________________
input1 = 4, input2 = 5, expected = 7
@pytest.mark.parametrize("input1, input2, expected", [
(1, 2, 3),
(4, 5, 7),
(-1, 1, 0),
(0, 0, 0)
])
def test_addition(input1, input2, expected):
> assert input1 + input2 == expected
E assert (4 + 5) == 7
test_feature_subfeature_withdata_001.py:11: AssertionError
===================================== short test summary info =====================================
FAILED test_feature_subfeature_withdata_001.py::test_addition[4-5-7] - assert (4 + 5) == 7
=================================== 1 failed, 3 passed in 0.06s ===================================
- 不使用
pytest
命令行,直接运行py
文件执行测试用例
有些读者觉得老要使用命令行执行用例就比较烦,能不能直接在py
文件中直接运行?
只需要在py
源文件中做两件事就可以达到这些效果:
import pytest
- 添加
pytest.main()
示例如下:
py
import pytest
@pytest.mark.parametrize("input1, input2, expected", [
(1, 2, 3),
(4, 5, 7),
(-1, 1, 0),
(0, 0, 0)
])
def test_addition(input1, input2, expected):
assert input1 + input2 == expected
pytest.main()
再运行这个文件时,就会执行测试用例!
作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来源自豆包AI,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.