Pytest测试用例执行方式详解:主函数、命令行与配置文件
本文详细介绍Pytest测试框架的三种核心执行方式:通过pytest.main()在代码中调用、命令行参数指定模块或目录、以及利用pytest.ini配置文件统一管理。内容涵盖常用参数如-s、-v、-n及失败重跑机制,帮助开发者灵活控制测试流程并提升自动化测试效率。
Pytest概述
Pytest是一个功能完备且成熟的Python测试框架,具备以下核心特性:
1、语法简洁灵活,易于上手,且拥有丰富的官方文档支持; 2、支持参数化测试,允许对测试用例进行细粒度的控制; 3、既适用于简单的单元测试,也能处理复杂的功能测试,同时兼容Selenium/Appium自动化测试及基于Requests的接口自动化测试; 4、拥有强大的第三方插件生态及自定义扩展能力,常用插件包括集成Selenium的pytest-selenium、生成HTML报告的pytest-html、支持失败重跑的pytest-rerunfailures以及支持多CPU分发的pytest-xdist等; 5、提供便捷的skip和xfail处理机制; 6、能与Jenkins等CI工具无缝集成。
以下是典型的目录结构示例:

1、主函数调用模式
(1) 执行所有用例:pytest.main() (2) 指定特定模块:pytest.main(['-vs'], './testcase/test_day1.py') (3) 指定特定目录:pytest.main(['-vs'], './testcase') (4) 通过nodeid指定具体用例:nodeid由模块名、分隔符、类名和方法名组成 # 示例:指定具体函数用例 # pytest.main(['-vs'], './interface_testcase/test_day3.py::test_demo11') # 示例:指定类下的具体方法用例 # pytest.main(['-vs'], './interface_testcase/test_day3.py::TestLogin::test_01_qianghong1')
2、命令行执行模式
(1) 执行所有用例:pytest (2) 指定特定模块:pytest -vs ./testcase/test_day1.py (3) 指定特定目录:pytest -vs ./testcase (4) 通过nodeid指定具体用例:nodeid由模块名、分隔符、类名和方法名组成 # 示例:指定具体函数用例 pytest -vs ./interface_testcase/test_day3.py::test_demo11 # 示例:指定类下的具体方法用例 pytest -vs ./interface_testcase/test_day3.py::TestLogin::test_01_qianghong1
常用参数说明: -s:输出调试信息,包含print语句的输出内容; -v:显示更详细的测试信息; -vs:结合使用上述两项功能; -n:支持多线程或分布式运行测试用例; # 示例:主函数模式指定线程数 # pytest.main(['-vs', './testcase/test_day1.py', '-n=2']) # 示例:命令行模式指定线程数 # pytest -vs ./testcase/test_day1.py -n 2 # reruns参数:指定失败用例的重跑次数 # pytest -vs ./testcase/test_day2.py --reruns 2 # 示例:主函数模式指定重跑次数 # pytest.main(['-vs', './testcase/test_day2.py', 'reruns=2']) # 失败用例重跑两次 # -x参数:只要有一个用例报错,立即停止测试; # --maxfail=2:当出现两个失败用例时停止测试; # -k参数:根据测试用例名称的部分字符串筛选执行,例如:pytest -vs test_day2 -k "yang"
3、通过读取pytest.ini配置文件运行(最推荐的方式)
# pytest.ini是Pytest框架的核心配置文件 (1) 存放位置:通常位于项目根目录; (2) 编码格式:必须为ANSI编码,可使用Notepad++等工具修改; (3) 主要作用:修改Pytest的默认行为; (4) 生效规则:无论是主函数模式还是命令行模式,运行前均会读取此配置文件。
[pytest]
addopts=-vs #命令行参数 用空格分离
testpaths=./testcase #测试用例的路径 ./testcase/test_day2.py #
python_files=test_*.py #模块名的规则
python_classes=Test* #类名的规则
python_functions=test #方法名的规则
在实际项目配置中,建议删除注释内容,以避免因格式问题引发不必要的错误。
以上即为Pytest测试用例执行方法的详细解析,更多相关技术资料请持续关注本站后续文章。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













