一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情。
1.pytest简介
pytest是一个非常成熟的python单元框架,比unittest更灵活,容易上手
pytest可以和selenium、requests、appium结合实现web自动化、接口自动化、APP自动化
pytest可以实现测试用例的跳过以及失败用例重试
pytest可以和allure生成非常美观的测试报告
pytest可以和Jenkins持续集成
pytest有很多非常强大的插件,并且这些插件能够实现很多实用的操作
常用的插件如下:
pytest-html:生成HTML格式的自动化测试
pytest-xdist:测试用例分布式执行,多CPU并发
pytest-ordering:用于改变测试用例的执行顺序
扫描二维码关注公众号,回复:
13785339 查看本文章
pytest-rerunfailures:用例失败后重跑
allure-pytest:用于生成美观的测试报告
2. 用例书写规则
2.1 模块命名规则
模块名必须以test加下划线开头或者下划线加test结尾
2.2 测试类命名规则
测试类名必须以Test开头,并且不能有init方法
2.3 测试方法命名规则
测试方法必须以test下划线加开头
3. 用例的运行方式
3.1 主函数运行
3.1.1 运行所有用例
pytest.main()
复制代码
3.1.2 运行指定模块的用例
pytest.main(['-vs', 'test_login.py'])
复制代码
3.1.3 运行指定目录中的用例:
pytest.main(['-vs', './interface_testcase'])
复制代码
3.1.4 通过modeid指定用例运行
nodeid由模块名、分隔符、类名、方法名、函数名组成
3.1.4.1 运行指定模块下的指定用例
pytest.main(['-vs', './interface_testcase/test_interface.py::test_04_func'])
复制代码
3.1.4.2 运行指定模块下的指定测试类下的指定用例
pytest.main(['-vs', './interface_testcase/test_interface.py::TestInterface::test_03_zhiliao'])
复制代码
3.2 命令行模式
3.2.1 运行所有
直接执行pytest
3.2.2 运行指定模块的用例
pytest -vs test_login.py`
复制代码
3.2.3 运行指定目录中的用例
pytest -vs ./interface_testcase
复制代码
3.2.4通过modeid指定用例运行
5.2.4.1 运行指定模块下的指定用例
pytest -vs ./interface_testcase/test_interface.py::test_04_func
复制代码
3.2.4.2 运行指定模块下的指定测试类下的指定用例
pytest -vs ./interface_testcase/test_interface.py::TestInterface::test_03_zhiliao
复制代码
3.3 通过读取pytest.ini配置文件运行(最常用的方式)
pytest.ini文件是pytest单元测试框架的核心配置文件
3.3.1位置
一般在项目的根目录
3.3.2 编码
必须是ANSI,可以使用notepad++修改编码格式
3.3.3 作用
改变pytest默认的行为
内容示例如下:
[pytest]
addopts = -vs # 命令行的参数,用空格分隔
testpaths = '../pytest_project' # 测试用例的路径
python_files = test*.py # 模块名的规则
python_classes = Test* # 类名的规则
python_functions = test # 方法名的规则
复制代码
运行的规则:不管是主函数运行,还是命令行模式运行,都获取读取这个配置文件