一:pytest介绍

1.非常成熟的单元测试框架,比unittest更加灵活,容易上手
2.pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化
3.pytest可以实现测试用例的跳过以及rerun失败用例重试
4.pytest可以和allure生成漂亮的报告
5.pytest可以和jenkins持续集成
6.pytest有强大的插件,功能很实用
pytest
pytest-html:生成html格式的自动化报告
pytest-xdist:测试用例分布式执行,多cpu分发
pytest-ordering:用于改变测试用例执行顺序
pytest-rerunfailures:用例失败重跑
allure-pytest:生成测试报告

二:pytest默认用例的规则以及基础应用

1.模块名必须以test或者_test结尾开头
2.测试类必须以Test开头,并且不能带有init方法
3.测试用例必须以test
开头

三:pytest测试用例的运行方式

main函数执行方法:
1.运行所有pytest.main()
2.指定模块:pytest.main([‘-vs’, ‘test_login.py’])
3.指定目录:pytest.main([‘-vs’, ‘./testcase’])
4.通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成pytest.main([‘-vs’, ‘./testcase/test_login.py::test_001’])

命令行模式:
1.运行所有:pytest
2.指定模块:pytest -vs test_login.py
3.指定目录:pytest -vs ./testcase
4.指定目录:pytest -vs ./testcase/test_login.py::test_001

通过读取pytest.ini配置文件运行

[pytest]
addopts=-vs 命令行参数,用空格分开

testpaths=./testcase 用例路径

pythonfiles=test.py 模块名的规则
python_classes=Test
类名的规则
python_functions=test
* 方法名的规则

addopts = -vs —html ./report/report.html

1.Pytest.ini这个文件是pytest的单元测试框架核心配置文件
2.编码:必须是ANSI,可以使用notepad++来更改编码格式(编码—-转为ANSI)
3.作用:改变pytest的默认行为
4.不管是主函数模式运行还是命令行模式运行,都会读取这个文件

四:常用参数介绍

执行的参数:
-vs
-v:输出相信信息
pytest -v
-s:输出调试信息
-n:多线程运行(pytest-xdist)
pytest -vs -n=2
return num 失败重跑 安装插件:pytest-rerunfailures
raise Exception(‘ggg’) 抛出异常
try except 解决异常
-x 出现一个用例失败,则停止测试
如:pytest -vs -x
—maxfail 出现几个失败才终止
—html 生成htnl测试报告 安装插件:pytest-html
pytest -vs —html ./reports/result.html
-k 运行测试用例中包含某个字符穿的测试用例
pytest -vs -k “002”

五:pytest用例执行顺序

Unittest:是通过ascII的大小来执行
Pytest:默认从上往下
改变默认的执行顺序:使用mark标记
@pytest.mark.run(order=2)

六:分组执行(冒烟、分模块、web和接口的)

一般放在项目的根目录下,名称必须是pytest.ini
编码格式是ANSI
Pytest.ini文件可以改变默认的测试用例规则
不管是命令行运行也好还是主函数运行也好,都会加载这个配置文件

当配置文件出现中文时候,有可能要更改编码格式GB2312

[pytest]
addopts=-vs
testpaths=./testcase
pythonfiles=test.py
python_classes=Test

python_functions=test
*

Pytest.ini

[pytest]
addopts = -vs
testpaths = ./testcase
pythonfiles = test.py
python_classes = Test

python_functions = test
*
markers =
smoke:冒烟用例
usermanage:用户管理

Smoke: 冒烟用例,分布在各个模块里头
Pytest -vs -m “smoke”

Pytest -vs -m “smoke or usermanage”

conftest.py

1.conftest文件单独存放于fixture固件的配置文件

2.在conftest中固件使用不需要导包

3.可以有多个conftest文件