python pytest 最简单的接口自动化测试框架

最近由于工作的原因,需要开发一个接口自动化测试框架,使用pytest框架、数据驱动,并展示直观的测试报告。

具体的开发过程如下:

  1. 安装必要的库:
    • pytest:用于编写和运行测试用例。
    • requests:用于发送 HTTP 请求。
    • pytest-html:用于生成 HTML 格式的测试报告。

可以使用以下命令安装这些库:

pip install pytest requests pytest-html

  1. 创建测试用例: 编写测试用例,每个测试用例使用不同的数据进行测试。可以将测试数据存储在一个文件中,比如 CSV 或 JSON 文件。

  2. 使用pytest编写测试脚本: 使用pytest编写测试脚本,读取测试数据并执行测试。pytest提供了fixture功能,可以用于准备测试数据、执行测试和清理测试环境。

  3. 生成测试报告: 使用pytest-html插件生成 HTML 格式的测试报告,使测试结果更加直观和易于理解。

下面我最开始的版本,比较简单,感兴趣的可以进一步优化开发:

# test_api.py
import pytest
import requests@pytest.fixture
def base_url():return "https://www.xxxx.com/api"@pytest.fixture(params=[("/endpoint1", {"param1": "value1"}, 200),("/endpoint2", {"param2": "value2"}, 404),# Add more test data as needed
])
def test_data(request):return request.paramdef test_api(base_url, test_data):url, params, expected_status_code = test_dataresponse = requests.get(base_url + url, params=params)assert response.status_code == expected_status_codedef pytest_generate_tests(metafunc):if "test_data" in metafunc.fixturenames:metafunc.parametrize("test_data", metafunc.module.test_data(), scope="function")# 在命令行中运行测试:pytest test_api.py --html=report.html

上面只有一个基本的测试用例test_api,它使用fixture base_url提供的基本 URL 并发送 GET 请求,然后使用数据驱动的方式传递不同的测试数据。pytest_generate_tests 函数用于生成测试用例,它会根据 test_data fixture 提供的参数执行测试。

运行测试时,可以使用pytest命令,并使用--html选项指定要生成的测试报告的文件名。生成的报告将包含测试结果、测试用例名称、执行时间等信息,以及可视化的测试结果。

后期会进行扩展优化.......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/747976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FPGA静态时序分析与约束(一)、理解亚稳态

系列文章目录 FPGA静态时序分析与约束(二)、时序分析 FPGA静态时序分析与约束(三)、读懂vivado时序报告 文章目录 系列文章目录前言一、概述一、何为亚稳态?二、图解亚稳态三、什么时候亚稳态会导致系统失效&#xff…

Jsch实践(三):如何使用Jsch的ChannelShell类,在远程服务器上执行脚本命令?

如何使用Jsch的ChannelShell类,在远程服务器上执行脚本命令 要使用JSch的ChannelShell类在远程服务器上执行脚本命令,你需要创建一个shell通道,然后向这个通道的输入流发送命令,并读取输出流来获取命令的响应。下面是一个示例代码…

k8s部署hadoop

(作者:陈玓玏) 配置和模板参考helm仓库:https://artifacthub.io/packages/helm/apache-hadoop-helm/hadoop 先通过以下命令生成yaml文件: helm template hadoop pfisterer-hadoop/hadoop > hadoop.yaml用kube…

apache和tomcat的优化总结概述

一. tomcat 的优化 Tomcat 作为一款广泛使用的 Java Web 应用服务器,其性能优化可以从以下几个方面进行: ① 内存配置优化: 调整JVM堆内存大小(-Xms和-Xmx参数),以确保Tomcat在处理大量并发请求时有足够…

Unity PS5开发 天坑篇 之 申请开发者与硬件部署01

腾了好几天终于把PS5开发机调试部署成功, 希望能帮到国内的开发者, 主机游戏PlayStation/Nintendo Switch都是比较闭塞的,开发者账号是必须的。 开发环境有两个部分,一是DEV Kit 开发机, TEST Kit测试机两部分组成,二是Unity的支持库(安装后…

vue3 ref 和 reactive 区别

Vue 3 引入了两种新的响应式 API:ref 和 reactive。这两个 API 都用于创建响应式数据,但它们的使用场景和行为有所不同。 ref 用途:ref 用于创建基本数据类型的响应式引用,如字符串、数字、布尔值等。 使用方式:在模…

最新开源解密版TwoNav网址导航系统源码

源码简介 2024最新开源解密版TwoNav网址导航系统源码去授权破解版 内置二十多套主题模板。 已去授权,最新开源解密版。TwoNav 是一款开源的书签(导航)管理程序,使用PHP SQLite 3开发,界面简洁,安装简单&…

FFmepg--音频编码流程--pcm编码为aac

文章目录 基本概念流程apicode(核心部分) 基本概念 从本地⽂件读取PCM数据进⾏AAC格式编码,然后将编码后的AAC数据存储到本地⽂件。 PCM样本格式:未经压缩的⾳频采样数据裸流 参数: Sample Rate : 采样频率Sample Size : 量化位数Number o…

Matlab进阶绘图第45期—蝴蝶气泡图

蝴蝶气泡图是一种特殊的柱泡图/气泡柱状图。 蝴蝶图一般由左右两个水平柱状图组合而成,其形如蝴蝶展翅,可以很直观地展示两种数据直接的差异。 而蝴蝶气泡图则是在两个水平柱状图每根柱子外侧额外添加大小不同的气泡,用于表示另外一个数据变…

使用IDEA2023创建传统的JavaWeb项目并运行与调试

日期:2024-0312 作者:dusuanyun 文档环境说明: OS:Deepin 20.9(Linux) JDK: OpenJDK21 Tomcat:10.1.19 IDEA: 2023.3.4 (Ultimate Edition) 本文档默认已经安装JDK及环境变量的配置。 关键词…

单片机设计-超声波视力保护仪的设计与实现

项目介绍 技术:C语言、单片机等 本设计利用超声波技术检测眼睛与书本的距离,调整看书位置,通过光敏检测判断环境光线强度是否适合阅读,并通过定时器设定阅读时长,以此解决人们由于看书姿势的错误,阅读环境…

Android11 FallbackHome启动和关闭流程分析

Android 7.0引入了新特性:Direct Boot Mode,设备启动后进入的一个新模式,直到用户解锁(unlock)设备此阶段结束。在这个模式下,系统调用 resolveHomeActivity 找到的是FallbackHome ,而不是我们的…

Python keyword-only参数

keyword-only 参数是Python 3中引入的一种新的参数语法。它允许您在定义函数时强制要求某些参数必须以关键字参数的形式传递。这种机制有助于提高代码的可读性和可维护性。 以下是 keyword-only 参数的语法: def function_name(arg1, arg2, *, kwarg1, kwarg2value):# 函数体…

Vscode screen 模式终端窗口查看历史信息

进入查看模式 ctrl a, [ 退出 ctrl c

CPU、GPU、IPU、NPU、TPU、LPU、MCU、MPU、SOC、DSP、FPGA、ASIC、GPP、ECU、

CPU: 中央处理器(Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。 它的功能主要是解释计算机指令以及处理计算机软件…

关于git提交代码时报错Committer identity unknown的解决方案

今天安装好git后,创建新项目,当git上传提交时出现了一个问题,如下: 解释 Commit failed - exit code 128 received, with output: *** Please tell me who you are. Run git config --global user.email "youexample.com&q…

什么是web3.0

Web 3.0是指下一代互联网的发展阶段,它是对当前Web 2.0的进化。Web 3.0的主要特点包括去中心化、区块链技术、智能合约以及数据隐私和安全性等方面的改进。与Web 2.0不同,Web 3.0旨在通过去中心化的方式实现更加开放、透明和安全的网络环境,让…

R语言数据挖掘-关联规则挖掘(1)

一、分析目的和数据集描述 要分析的数据是美国一区域的保险费支出的历史数据。保险费用数据表的每列分别为年龄、性别、体重指数、孩子数量、是否吸烟、所在区域、保险收费。 本文的主要目的是分析在年龄、性别、体重指数、孩子数量、是否吸烟、所在区域中这些因素中&#xf…

webpack5零基础入门-8清空前次打包文件与处理图标字体资源

1.配置output中的clean属性为true output: {/**文件输出路径 绝对路径*///__dirname 表示当前文件的文件夹目录path: path.resolve(__dirname, dist),//所有文件的输出目录/**文件名 */filename: static/js/dist.js,//入口文件输出文件名clean: true,//在打包前将path整个目录内…

android studio配置gradle

几次重配android studio环境都在gradle上浪费好多时间。这次记录一下: 下载并copy gradle-5.6.4-all.zip解压到一个目录,如"E:\dev_env\gradle-5.6.4",IDE中File - setting - Build,Ex... - Build-Tools - Gradle页,把…