pytest系列之用例书写规则及用例运行方式

一起养成写作习惯!这是我参与「掘金日新计划 · 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 # 方法名的规则
复制代码

运行的规则:不管是主函数运行,还是命令行模式运行,都获取读取这个配置文件

猜你喜欢

转载自juejin.im/post/7085503482542686244