pytest框架介绍
一,pytest单元测试框架
1. 什么是单元测试框架
单元测试是指在软件开发中,针对的软件的最小单位(函数,方法)进行正确性的检测
2. 单元测试框架
java:Junit和testng
python:unittest和pytest
3. 单元测试框架是做什么的?
测试发现:找执行文件
测试执行:按照一定的规则执行
测试判断:通过断言判断
测试报告:统计执行进度,好事,通过率,生成测试报告
-
二 、 单元测试框架和自动化测试框架的关系:
什么是自动化测试框架
封装了 技术 管理等模块
作用:提高效率和维护成本,减少人工干预和增加准确性,增加代码的重用性
pytest单元测试框架和自动化测试框架的关系
单元测试框架:只是自动化测试框架中的组成部分之一
pom设计模式
数据驱动
关键字驱动
全局配置文件的封装
日志监控
selenium,request二次封装
断言
报告邮件
更多都是自动化测试框架中的组成部分之一
三 、 pytest简介
pytest 是非常成熟的pytest的单元测试框架,比unittest更灵活,容易上手
可以和selenlum,request,applum结合实web自动化,接口自动化,app自动化
可以实现测试用例的跳过及reruns的失败用例重试
可以和allure生成非常美观的测试报告
pytest和Jenkins持续继承
有很多插件,实现实用的操作:
pytest,
pytest-html :生成html的自动化测试报告
pytest-xdist:测试用例的分布式执行,多cpu分发
pytest-ordering:改变测试用例的执行顺序
pytest-rerunfailures:用例失败后重跑
alluer-pytest:用于生成美观的测试报告
将包名写在requirements.txt中,pip install -r equirements.txt 全部下载
四、pytest 规则和基础应用
模块名必须以test开头或者test结尾
测试类必须以Test开头,并且不能有init方法
测试方法必须以test开头
五、pytest测试用例的运行方法
主函数模式:
运行所有:pytest.main()
指定模块:pytest.main(['-vs','test_login.py'])
指定目录:pytest.main(['-vs','/interface_testcase'])
通过nodeid指定用例执行:nodeid由 模块名,分割符,类名,方法名,函数名组成
pytest.main(["-vs",'./interface_testcase/test_interface.py::test_04_func'])
pytest.main(["-vs",'./interface_testcase/test_interface.py::Test_interface::test_01'])
命令行的模式:
运行所有:pytest
指定模块:pytest -vs test_login.py
指定目录:pytest.main -vs | /interface_testcase
nodeid:pytest -vs ./interface_testcase/test_interface.py::Test_interface::test_01
参数详解:
-s:输出调试信息,包括print的打印信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n:多线程或者分布式运行用例:pytest.main(["-vs","-n=3"])
--reruns:用例失败后,重跑的次数:pytest.main(["-vs","./testcase","-n=2","--reruns=2"])
-x:只要有一个用例报错,就停止
--maxdfail=2: 允许失败两次,不影响用例执行
-k:根据测试用例的部分字符串执行测试用例
-html:./report/report.html 生成html的测试报告
如:pytest -vs ./testcase -k "ao"
通过读取pytest.ini配置文件运行
pytest.ini:是pytest单元测试框架的核心配置文件
位置:一般是根目录
编码:必须是ANSI,推荐使用nopad++
作用:更改pytest的默认行为
运行的规则:启动配置
[pytest]
#命令行参数,用空格分开
addopts=-vs--html=./report/report.html
#配置测试文件夹
testpaths= ./testcase
#测试搜索的模块文件名称
python_files=test*.py
#测试搜索的测试类名
python_classes=Test*
#测试搜索的测试函数名
python_funtions=test*
六、pytest用例的执行顺序
unittest:ascii的大小来决定执行顺序
pytest:默认是从上到下
改变默认的顺序:使用Mark标记
@pytest.mark.run(order=3)
七、分组执行(冒烟,分模块执行,分接口和web执行)
smoke:冒烟用例,分布在各个模块里
pytest.main(['-m smoke or usermanger'])
markers=
smoke:冒烟用例
usermanger:用户管理模块
productmanager:商品管理模块
八、pytest跳过测试用例
无条件跳过:
@pytest.mark.skip(reason='太慢')
有条件跳过:文章来源:https://www.toymoban.com/news/detail-598097.html
@pytest.mark.skipif(age>18,reason='已成年')#满足条件不执行文章来源地址https://www.toymoban.com/news/detail-598097.html
到了这里,关于pytest框架介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!