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

接口自动化测试之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.lryc.cn/news/2401101.html

相关文章:

  • 服务器被攻击了怎么办
  • 06-排序
  • python,shell,linux,bash概念的不同和对比联系
  • FPGA管脚类型,及选择
  • 如何在 Ubuntu22.04 上安装并开始使用 RabbitMQ
  • R-CNN 模型算法流程梳理
  • 细说C语言将格式化输出到FILE *stream流的函数fprintf、_fprintf_I、fwprintf、_fwprintf_I
  • 本地日记本,用于记录日常。
  • [蓝桥杯]格子刷油漆
  • Monorepo架构: 项目管理工具介绍、需求分析与技术选型
  • ubuntu下libguestfs-tools
  • Authentication failed(切换了新的远程仓库tld)
  • 【Web应用】若依框架:基础篇14 源码阅读-后端代码分析-课程管理模块前后端代码分析
  • 在 Linux 上安装 `pgvector`(这是一个 PostgreSQL 的向量类型扩展,常用于处理嵌入向量,便于进行向量相似度搜索)
  • 09.MySQL内外连接
  • Python爬虫实战:研究Scrapy-Splash库相关技术
  • 智能升级:中国新能源汽车充电桩规模化建设与充电桩智慧管理方案
  • AlphaFold3服务器安装与使用(非docker)(1)
  • 接口自动化测试之pytest接口关联框架封装
  • M1安装并使用Matlab2024a进行java相机标定
  • 02-Redis常见命令
  • 【论文阅读笔记】Text-to-SQL Empowered by Large Language Models: A Benchmark Evaluation
  • 使用ArcPy进行栅格数据分析
  • 华为OD机试真题——告警抑制(2025A卷:100分)Java/python/JavaScript/C/C++/GO最佳实现
  • Java转Go日记(五十七):gin 中间件
  • 《树数据结构解析:核心概念、类型特性、应用场景及选择策略》
  • 在本地查看服务器上的TensorBoard
  • 硬件开发全解:从入门教程到实战案例与丰富项目资源
  • 嵌入式学习笔记 - freeRTOS的两种临界禁止
  • 202403-02-相似度计算 csp认证