当前位置: 首页 > 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://www.lqws.cn/news/109711.html

相关文章:

  • 【AI学习从零至壹】基于深度学习的⽂本分类任务
  • 红外遥控器接收实验:Simulink应用层开发
  • Unity Shader编程】之高级纹理
  • Lua和JS的继承原理
  • SAP学习笔记 - 开发20 - 前端Fiori开发 Nest View(嵌套视图) ,Fragment(片段)
  • 吞咽与营养并重:进行性核上性麻痹的饮食之道
  • 什么是“音节”?——语言构成的节拍单位
  • FreeRTOS,其历史争议、兼容性、生态、未来展望
  • MYSQL索引详解及索引优化、分析
  • MyBatis常用注解全解析:从基础CRUD到高级映射
  • RL中的熵机制:策略熵坍缩分析与协方差正则化方法
  • 【FreeRTOS#1】多任务处理任务调度器任务状态
  • 【计算机网络 第8版】谢希仁编著 第六章应用层 题型总结1 编码
  • 队列的讲解:C++队列的使用
  • C++ set数据插入、set数据查找、set数据删除、set数据统计、set排序规则、代码练习1、2
  • 6月2日day43打卡
  • 【Python进阶】元类编程
  • 基于c++面向对象的设计(下)
  • 亚马逊Woot提报常见问题第一弹
  • C#基础:使用线程池执行并行任务
  • 蓝绿部署解析
  • 【leetcode-两数之和】
  • 笔记本电脑开机无线网卡自动禁用问题
  • 开源模型应用落地-OpenAI Agents SDK-集成Qwen3-8B(一)
  • 【北邮 操作系统】第十三章 I/O系统
  • 推荐算法八股
  • git clone报错:SSL certificate problem: unable to get local issuer certificate
  • 金融中的线性优化:投资组合分配与求解器 - Part 2
  • 【大模型】ChatGLM训练框架
  • R1-Searcher++新突破!强化学习如何赋能大模型动态知识获取?