一、pytest单元测试框架
![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944021-188462082.png)
二、单元测试框架与自动化测试框架
1.什么是自动化测试框架
单元测试框架、pom设计模式、数据驱动、关键字驱动、全局配置文件的封装、日志监控等只是自动化测试框架的组成部分之一。![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944041-459545987.png)
2.pytest简介
- pytest是一个非常成熟的python单元框架,灵活,容易上手。
- pytest可以和selenium,requests,appium结合实现web自动化、接口自动化
- pytestk可以实现测试用例的跳过以及reruns失败测试用例的重试。
- 可以和allure生成非常美观的测试报告
- 可以和Jenkins持续集成
- 有很多非常强大的插件,能够实现很多实用的操作。例如:
![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944088-656271940.png)
- 模块名必须以test_开头或者_test结尾。
- 测试类必须以Test开头,并且不能有init方法。
- 测试方法必须以test开头。
三、pytest测试用例的运行方式
1.主函数模式:
运行所有(pytest.main()) 指定模块:pytest.main(['-vs','test_login.py']) 指定目录:pytest.main(['-vs','./interface_testcase']) 通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成。![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944041-1641779526.png)
![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944012-186464426.png)
2.命令行模式:
- 运行所有:pytest
- 运行指定模块:pytest -vs test_login.py
- 运行指定目录;pytest -vs ./interface_testcase
- 指定目录:pytest -vtest_04_funcs ./interface_testcase/test_interface.py::test_04_func
2.1参数详解
-s:表示输出调试信息,包括输出调试打印信息 -v:表示详细的方式,类名 测试名 -vs:这两个参数可以合并 -n:支持多线程或者分布式运行测试用例 如:pytest -vs ./testcase/test_login.py -n 2 --reruns NUM:失败用例重跑 -x:表示只要一个用例报错,那么测试停止 --maxfail=2 允许的最大失败次数 -k:根据测试用例的部分字符串指定测试用例 如:pytest -vs ./testcase -k "ao"![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944044-1486517808.png)
3.通过读取pytest.ini配置文件运行
pytest.ini是pytest单元测试框架的核心配置文件。 文件位置一般放在项目的根目录,编码必须是ANSI,作用可以改变pytest的默认行为。运行的规则不管是主函数模式运行,命令行模式运行,都会去读取这个默认配置文件。![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944050-1553570233.png)
四、pytest执行测试用例的顺序是怎样的呢?
默认从上到下。还可以通过标记方式改变默认执行顺序,试用mark标记@pytest.mark.run(order=)![0](/i/l/?n=23&i=blog/2168732/202303/2168732-20230327201944047-1606933765.png)