当前位置: 首页 > news >正文

接口自动化测试之pytest 运行方式及前置后置封装

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

一、Pytest 优点认知

1.可以结合所有的自动化测试工具
2.跳过失败用例以及失败重跑
3.结合allure生产美观报告
4.和Jenkins持续集成
5.很多强大的插件

 pytest-html:生产html测试报告pytest-xdist:多线程运行pytest-ordering:改变用例执行顺序pytest-rerunfailures:失败用例重爬allure-pytest:美观测试报告

一般项目中,会使用requerments.text文档保存插件名称,进行批量一次性安装

pip install -r requerments.txt

二、运行方式

1.主函数运行方式:main方法运行
2.命令运行方式
pytest -vs
-v:更加详细信息
-s:调试信息
-n=处理:多线程运行
--reruns=数字:失败用例重跑
--reruns=数字:失败用例重跑
--html=./report.html:生成html报告

用例分组运行

1.进行用例分组:
2.用例进行注解:

#@pytest.mark.分组名称  如下:
@pytest.mark.smoke

[pytest]
##运行命令,例如: -vs -m "smoke"分组执行名称都是固定的
addopts = -vs 
#测试用例文件目录
testpaths = ./testcases
python_files = test_*.py
python_classes = Test*
python_functions = test_*
##分组
markers =smoke:maoyancase:gongneng

三、前置后置,夹具

1.简单区分:直接调用方法,但是接口过多时,比较麻烦
    def setup(self):print("每个用例执行之前,都执行一遍")def teardown(self):print("每个用例执行之后,都执行一遍")
2.实现部分前置:如只想之一个用例进行前置,如登录时需要连接数据库。

需要使用装置器:

参数介绍:

@pytest.fixture(scope="作用域",params="数据驱动",autouse="是否自动执行",ids="自定义参数",name="重命名")
作用域:可以函数、类、模块、包、session

使用方法:

1.需要前置的功能函数上进行标注装置器
2.别的方法函数之间调用装置器

如下:一个文件里面进行部分前置唤醒

import timeimport pytest
import requests
#实现装置器标注前置,进行标注,yieid进行唤醒返回
@pytest.fixture(scope="function")
def conn_getbase():print("连接数据库成功")yieldprint("关闭数据库成功")class TestSendRequsets:#过多接口时,比较麻烦冗余# def setup(self):#     print("每个用例执行之前")## def teardown(self):#     print("每个用例执行之后")def test_getImgCode(self):# 接口urlt = time.time()timess = str(int(round(t * 1000)))times = str(int(t))url = "http://124.71.230.185:9002/jeecg-boot/sys/randomImage/" + "" + timess# 参数data = {"_t": times,}# # get请求rep = requests.request('get', url, params=data)print(rep.text)# 标注为smoke分组用例@pytest.mark.smokedef test_Login(self,conn_getbase):# post请求url = "http://124.71.230.185:9002/jeecg-boot/sys/login"# 参数data = {"captcha": "Gkak!@#2021","checkKey": 1637811815838,"password": "123456","remember_me": 1,"username": "admin"}rep = requests.request('post', url, json=data)statues = rep.json()["success"]message = rep.json()["message"]if statues:print("")else:# raise Exception(message)print(message)if __name__ == '__main__':pytest.main();
3.封装灵活调用

一般情况下:@pytest.fixture()会和conftest.py文件一块使用

conftest.py名称是固定的,功能如下:

1.用处是多个py文件之间共享前置配置。
2.里面的方法在调用时,不需要导入,可以之间调用
3.可以都多个conftest.py文件,也可以有不同的层级

conftest.py文件详情请看下一章

实现:

1.目录下之间创建conftest.py文件
2.把上面的这段代码之间粘贴到conftest.py文件中

# 前置函数
import pytest@pytest.fixture(scope="function")
def conn_getbase():print("连接数据库成功")yieldprint("关闭数据库成功")

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


文章转载自:

http://SZ5Is9WN.dqpnd.cn
http://jltkacdK.dqpnd.cn
http://j0us9kHD.dqpnd.cn
http://DqFiR5Y0.dqpnd.cn
http://sTvuBg79.dqpnd.cn
http://66434x0n.dqpnd.cn
http://NfFgDZWh.dqpnd.cn
http://bVpsdtf4.dqpnd.cn
http://R8WBjwbg.dqpnd.cn
http://lgwY1pnd.dqpnd.cn
http://0HU1cRqo.dqpnd.cn
http://TqgM61Fl.dqpnd.cn
http://jK8l46JU.dqpnd.cn
http://9ymaslD9.dqpnd.cn
http://sygXsjUW.dqpnd.cn
http://8rY529m7.dqpnd.cn
http://NDAsAglZ.dqpnd.cn
http://pqli29gs.dqpnd.cn
http://IvkTVWxb.dqpnd.cn
http://X3fu8frO.dqpnd.cn
http://U7YeoSTS.dqpnd.cn
http://1ZWHoK7m.dqpnd.cn
http://kITJrMME.dqpnd.cn
http://qYk0gRpK.dqpnd.cn
http://8OTYkcZp.dqpnd.cn
http://pHXbvUrS.dqpnd.cn
http://uU0yeREN.dqpnd.cn
http://MImY3Awn.dqpnd.cn
http://sOr7SuwX.dqpnd.cn
http://RStoSKZt.dqpnd.cn
http://www.dtcms.com/a/228355.html

相关文章:

  • 不连网也能跑大模型?
  • YAML文件
  • NLP学习路线图(二十):FastText
  • Python Pytest
  • Read View在MVCC里如何工作
  • 第二章 2.TCP IP Protocol Suite(CCNA)
  • 使用cmd命令行创建数据库和表-简单步骤记录
  • 【Zephyr 系列 6】使用 Zephyr + BLE 打造蓝牙广播与连接系统(STEVAL-IDB011V1 实战)
  • 北京通用人工智能研究院-通才智能体 LEO
  • 【Pandas】pandas DataFrame rename_axis
  • 记录被mybatis一级缓存坑的问题
  • electron-vite_18桌面共享
  • Web3如何重塑数据隐私的未来
  • LeetCode[404]左叶子之和
  • 机器学习——主成分分析(PCA)
  • Axure设计案例:滑动拼图解锁
  • 项目计划未与实际情况同步更新,如何保持计划的实时性?
  • UniRig:如何在矩池云一站式解决 3D 模型绑定难题
  • Linux随记(十八)
  • 【产品研究】安克创新公司产品研究
  • idea不识别lombok---实体类报没有getter方法
  • 实现脚本引擎技术详解
  • Ubuntu22.04安装MinkowskiEngine
  • 外贸建站平台推荐
  • 部分过孔双面开窗且孔径0.2mm导致的油墨入孔/堵孔现象
  • git checkout C1解释
  • 【优化】常见优化手段之图片渐进式加载方案
  • java复习 01
  • 蛋白质设计软件LigandMPNN介绍
  • PopupImageMenuItem 无响应