统一请求封装和pytest入门使用

news/2025/2/9 8:47:25/

统一请求封装解决的问题

    1. 解决多个py文件共享session的问题
    1. 统计请求的数据
    1. 统一异常处理
    1. 统一日志监控

封装

在项目文件中创建一个common文件夹, 用来进行统一接口封装

import requestsclass RequestUtil:# 调用底层的requests.session()方法进行封装sess = requests.session()def all_send_request(self, method, url, **kwargs):result = self.sess.request(method, url, **kwargs)return result

pytest 框架入门

默认的pytest测试用例规则

  • 模块名必须以test_或者_test结尾
  • 类名必须以Test开头
  • 测试用例名必须以test_开头

pytest 可以 结合 selenium、appium、requests 分别实现 web自动化,app自动化,接口自动化

pytest常用插件

pytest		本身
pytest-html		生成html报告
pytest-xdist	多线程执行用例
pytest-ordering		控制测试用例的执行顺序
pytest-rerunfailures	失败用例重跑
allure-pytest			生成美观的allure报告

当我们想一次性下载多个插件时, 我们会创建一个requirements.txt文件, 文件内容大概如下
在这里插入图片描述

然后在终端中输入命令

pip install -r requirements.txt[文件名]

按下回车,即可安装文件中所输入的插件

pytest运行方式详解

  1. 通过main方法运行
import pytestif __name__ == "__main__":pytest.main()
  1. 通过命令行运行
    参数
    • -vs -v输出详细信息,-s输出调试信息

在这里插入图片描述

  • -n 表示多线程执行
  • –reruns 失败用例重跑
  • 这里我在程序中抛出一个异常
  • raise Exception("reruns测试异常重跑!!!!")
  • 运行命令 : pytest --reruns=2
    3在这里插入图片描述
  • –html 生成html文件 : 会在当前目录下生成一个report的html文件
  • 命令: pytest --html="./reports/report.html"
  1. 通过pytest.ini文件运行
    • 不管主函数运行还是命令行运行,都是通过pytest.ini全局配置文件执行
    • 如果需要执行多个标记markers中的内容,可以在addopts中输入
    • addopts = -vs -m "smoke or ocean"
      在这里插入图片描述

pytest 前后置固件

  • 前置函数固件
    • 第一种夹具
      在这里插入图片描述
  • 第二种夹具: fixtrue(常用,实现指定用例执行前后置), 完全可以替换上面的方法
  • 装饰器:
@pytest.fixtrue(scope="作用域", params="参数化", autouse="自动执行", ids="参数名别名", name="fixture别名" )@pytest.fixture(scope="function", autouse=False)
def connect_database():print("链接数据库")yield  # 生成器,获取它的后置处理结果print("关闭数据库")# 单独调用,只在一个函数中生效def test_001(self, connect_database):""":param connect_database: fixture执行函数:return:"""print("测试001号函数")

执行结果
在这里插入图片描述

  • scope 参数
    • function 用例级别
    • class 类
    • package/session 会话级别

fixture中的参数化 parmas

  1. 在fixture中使用参数话
@pytest.fixture(scope="function", autouse=False, params=[["name", "百里"], ["age", 18]])
def connect_database(request):print("链接数据库")yield request.param  # 当有参数化时的固定写法,在后置使用函数中打印即可print("关闭数据库")
  1. 在test函数中调用参数话,并打印输出信息
    在这里插入图片描述

fixture独立(重要!)

想要将fixture独立,必须使用conftest.py文件进行操作
在这里插入图片描述


http://www.ppmy.cn/news/59063.html

相关文章

国考省考结构化面试:情景模拟题的答题思路,人际关系题的变种,就题答题,灵活多变,关键在自己多思考,说话要有艺术

国考省考结构化面试:情景模拟题的答题思路,人际关系题的变种,就题答题,灵活多变,关键在自己多思考,说话要有艺术 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能,附带…

【Minecraft开服】Windows搭建我的世界MC服务器「公网远程联机」

文章目录 1. Java环境搭建2.安装我的世界Minecraft服务3. 启动我的世界服务4.局域网测试连接我的世界服务器5. 安装cpolar内网穿透6. 创建隧道映射内网端口7. 测试公网远程联机8. 配置固定TCP端口地址8.1 保留一个固定tcp地址8.2 配置固定tcp地址 9. 使用固定公网地址远程联机 …

matlab all函数详解

MATLAB中的all函数是一个非常重要的函数,它可以用来判断矩阵或向量中元素是否全部为真。当所有元素都为真时,all函数返回值为真,否则返回值为假。all函数的语法格式为: tf all(A) tf all(A,dim)其中,A是要检查的矩阵…

每日一个小技巧:1招教你怎么将照片无损放大

照片是一种记录、分享和保存记忆的重要方式。它可以记录特殊的时刻和经历,如毕业典礼、婚礼、旅游等,为我们锁住美好回忆。不知道大家有没有经历过,在手机或者电脑上打开一张拍摄的照片,却发现它的尺寸太小了,手动放大…

【数据结构与算法】图——邻接表与邻接矩阵

文章目录 一、图的基本概念二、图的存储结构2.1 邻接矩阵2.2 邻接表2.3 邻接矩阵的实现2.4 邻接表的实现 三、总结 一、图的基本概念 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E&#…

自动驾驶行业观察之2023上海车展-----车企发展趋势(3)

合资\外资发展 宝马:i7、iX1新车亮相,未来将持续发力电动化、数字化(座舱) 宝马在本次车展重点展示了电动化产品,新发车型为i7 M70L、iX1、及i vision Dee概念车等车型。 • 展示重点:电动化数字化&…

存储资源调优技术——SmartThin智能精简配置技术

目录 基本概念 工作原理 SmartThin关键技术 SmartThin主要功能 应用场景 精简LUN,存储空间超分配 按需动态分配存储资源,提高存储资源利用率 Thick和Thin LUN的区别如下 基本概念 Thin Lun属于存储资源的虚拟化,因此需要基于RAID 2.0存…

2008-2020年上市公司能源消耗数据

2008-2020年上市公司能耗数据/上市公司能源消耗数据 1、时间:2008-2020年 2、指标包括:上市公司ID、证券代码、证券简称、资源名称、消耗量、单位 EndDate [统计截止日期] - YYYY-12-31 InstitutionID [上市公司ID] - null Symbol [证券代码] - 交易所…