Python接口测试的主要模块有:Unittest和Pytest
Unittest是Python自带的单元测试框架,Pytest是一个第三方单元测试框架,具有丰富的插件生态,兼容Unittest测试集,社区繁荣
Pytest特性有:
Pytest可以和Selenium、Requests、Appium结合实现Web自动化、接口自动化、App自动化
Pytest可以实现测试用例的跳过以及reruns失败用例重试
Pytest可以和Allure生成非常美观的测试报告
Pytest可以和Jenkins持续集成
例如:
"""
pytest-html 生成html格式的自动化测试报告
pytest-xdist 测试用例分布式执行,多CPU分发
pytest-ordering 用于改变测试用例的执行顺序
pytest-rerunfailures 用例失败后重跑
allure-pytest 用于生成美观的测试报告
pytest-selenium 集成Selenium
"""
安装:
pip install pytest
Pytest框架的用例执行入口:
pytest.main(args参数列表)
'''
-s: 显示程序中的print/logging输出
-v: 丰富信息模式,输出更详细的用例执行信息
-vs: 该两个参数可一起使用
-q: 安静模式,不输出环境信息
-x: 出现一条测试用例失败就退出测试
-n=num: 多线程或分布式运行测试用例(需要先安装pytest-xdist)
--html=./report.html: 生成xml/html格式测试报告(需要先安装pytest-html)
--reruns num:重试运行测试用例(需要先安装pytest-rerunfailures)
'''
1) 主函数模式
'''
pytest.main() 运行当前目录下所有以test开头或结尾的文件
pytest.main(['test.py']) 运行指定模块
pytest.main(['./test']) 运行指定目录
通过nodeid指定用例运行:nodeid有模块名、分隔符、类名、方法名、函数名组成
pytest.main(["test.py::Test_Class"]) 指定类名
pytest.main(["test.py::Test_Class::test_method"]) 指定方法
'''
2) 终端命令行模式
'''
pytest 运行所有,当传入参数-s、-v、-x时,相当于命令行输入pytest -s -v -x
pytest test.py 运行指定模块
pytest ./test 运行指定目录
pytest test.py::Test_Class::test_method 指定方法
'''
3) 通过pytest.ini
配置文件运行
位置:一般放在项目的根目录
编码:必须是ANSI,可以使用Notepad++修改编码格式
作用:改变Pytest默认的行为
运行规则:不管是主函数的模式运行,还是命令行模式运行,都会去读取这个配置文件
例如:
'''
[pytest]
# 命令行参数,多个参数使用空格分隔
addopts = -vs
# 测试用例文件夹(目录)
testpaths = ../pytestproject
# 测试搜索的模块文件名称
python_files = test*.py
# 测试搜索的测试类名
python_classes = Test*
# 测试搜索的测试函数名
python_functions = test*
'''
Pytest:默认从上到下执行
改变默认执行顺序:使用mark标记
@pytest.mark.run