一、作用:
1、发现用例:默认发现用例的规则。模块名必须以test_开头或者_test结尾,测试类必须以Test开头,测试方法必须以test_开头
2、执行用例
3、判断结果
4、生成结果
二、Pytest用例管理框架详细介绍
结合sele,reque,appium实现web,接口,app自动化。
Allure生成非常美观的报告以及和jenkins实现持续集成
插件:pytest;
pytest-html;生成html报告
pytest-xdist 多线程执行
pytest-ordering 控制用例的执行顺序
pytest-rerunfailures 失败用例重跑
pytest-base-url 基础路径
allure-pytest 生成allure报告
---------上述均放到requirements.txt里面,通过以下命令安装
pip install -r requirements.txt
三、如何执行
1、命令行?不行现在
2、主函数
import pytest
if __name__ == '__main__':
pytest.main()
3、通过配置文件pytest.ini来改变以及执行用例
不管是命令行还是主函数,都会读取pytest.ini配置文件来执行。
[pytest]
#配置参数
addopts = -vs -m "smoke"
#改变用例的查找规则
testpaths = ./testcases
#改变模块的查找规则
python_files = test_*.py
#改变函数的查找规则
python_functions = test_*
#标记
markers =
smoke:冒烟测试
先添加标签【python】 addopts = -vs : 输出调试&详细信息
-s:输出调试信息,包括print打印的信息
-v:显示更详细的信息
-q:显示简略信息,与-v作用相反
-p no:warning :过滤警告
-p no:randomly :disable随机执行
-n=num:启用多线程或分布式运行测试用例。需要安装pytest-xdist插件模块
-k=value:py文件中用例包含value的用例都会被执行
-m=标签:执行被@pytest.mark.标签名标记的用例
-x:只要有一个用例执行失败就停止当前线程的测试执行
–maxfail=num:与-x功能一样,可以自定义用例失败次数
–rerun=num:失败用例重跑,需要安装pytest-rerunfailures插件模块
-l:展示运行过程中的全局变量和局部变量
–collect-only:罗列出所有当前目录下所有的测试模块,测试类及测试函数
–ff:如果上次测试用例出现失败的用例,当使用–ff后,失败的测试用例会首先执行,剩余的用例也会再次执行
–lf:当一个或多个用例失败后,定位到最后一个失败的用例重新运行,后续用例会停止运行
–html=report.html:当前目录生成名为report.html的测试报告,需要安装pytest.html插件模块
————————————————
版权声明:上述参数总结详见CSDN博主「鹿上的程序媛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_41571224/article/details/124517351
四、Pytest用例管理框架的前后置(固件,夹具)
1、作用:在你的用例或类前后执行相应的操作
class TestMAP(object):
now_time = ""
def setup(self):
print("每个用例前的操作")
def teardown(self):
print("每个用例后的操作")
def setup_class(self):
print("每个类后的操作")
def teardown_class(self):
print("每个类后的操作")
2、前后置工具:fixture固件,夹具
装饰器:
@pytest.fixture(scope = "作用域",params="参数化",autouse="自动执行",ids=“参数别名”,name = "")
scope:function, class, module, session
params: 参数化["qqqq","ewee"]
ids:参数别名["q","e"]
name:夹具别名
a、
@pytest.fixture(scope="function", autouse=True)
def description():
print("\n用例开始执行")
yield
print("\n用例执行结束")
@pytest.fixture(scope="function", autouse=False)
def description():
print("\n用例开始执行")
yield
print("\n用例执行结束")
# 执行上述方式:def test_navi_main(self,description):
b、
@pytest.fixture(scope="function", autouse=False, params=["feature1", "feature2"])
def description(request):
print("\n用例开始执行")
yield request.param
print("\n用例执行结束")
# 执行上述方式:def test_navi_main(self,description):
# def test_print_date(self, description):
# print(description)
配置参数:
base_url:https://api.weixin.qq.com
函数中适用时:
def test_navi_main(self,base_url):
url = base_url+"XXXXXX"
allure报告:如需要allure报告显示,导入allure模块,并将每条用例加allure标签。
详细说明找时间仔细梳理一下,此处不更新