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

python + Pytest + requests 的接口自动化步骤

python+pytest+request+allure+yaml接口自动化测试项目实战

开发环境准备

1. jdk 下载

Java官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
安装: https://blog.csdn.net/VA_AV/article/details/138508891

2. Pytest

# 安装
pip install pytest#更新 pytest 
pip install --upgrade pytest# 确认 Pytest 是否已成功安装,并显示 Pytest 的版本信息
pytest --version

python + Pytest + requests 的接口自动化

1. 设计框架结构

project_root/
├── conf/                # 配置文件
│   ├── config.yaml      # 全局配置
│   └── env_config.yaml  # 环境配置
├── data/                # 测试数据
│   ├── test_data.json   # 测试数据文件
│   └── ...
├── lib/                 # 自定义库
│   ├── api_client.py    # API客户端
│   └── utils.py         # 工具函数
├── tests/               # 测试用例
│   ├── test_case1.py
│   ├── test_case2.py
│   └── ...
├── reports/             # 测试报告
│   ├── allure_report/   # Allure报告
│   └── pytest_report/   # Pytest报告
├── requirements.txt     # 依赖包
└── README.md            # 项目说明

2. 编写配置文件

# conf/config.yaml
base_url: http://api.example.com
timeout: 10# conf/env_config.yaml
dev:base_url: http://dev-api.example.comtimeout: 5prod:base_url: http://prod-api.example.comtimeout: 10

置文件用于管理全局配置和环境配置。例如:

3. 封装API客户端

封装一个API客户端,用于发送HTTP请求并处理响应。例如,使用Python和Requests库:

# lib/api_client.py
import requests
from conf.config import configclass APIClient:def __init__(self):self.base_url = config['base_url']self.timeout = config['timeout']def get(self, endpoint, params=None, headers=None):url = f"{self.base_url}{endpoint}"response = requests.get(url, params=params, headers=headers, timeout=self.timeout)return responsedef post(self, endpoint, json=None, headers=None):url = f"{self.base_url}{endpoint}"response = requests.post(url, json=json, headers=headers, timeout=self.timeout)return response# 其他HTTP方法类似

4. 编写测试用例

编写具体的测试用例,使用测试框架来组织和运行这些用例。例如,使用Pytest:

# tests/test_case1.py
from lib.api_client import APIClientdef test_get_user():client = APIClient()response = client.get('/users/1')assert response.status_code == 200assert response.json()['id'] == 1def test_create_user():client = APIClient()data = {'name': 'John Doe', 'email': 'john.doe@example.com'}response = client.post('/users', json=data)assert response.status_code == 201assert response.json()['name'] == 'John Doe'

5. 集成报告工具

集成报告工具,生成详细的测试报告。例如,使用Allure:

# 安装Allure插件
pip install allure-pytest# 运行测试并生成报告
# 要使 Allure 侦听器能够在测试执行期间收集结果,只需在命令行添加存储结果的文件夹的路径参数即可
pytest --alluredir=reports/allure_report
#要在测试完成后查看实际报告,需要使用 Allure 命令行实用程序从结果生成报告:
allure serve reports/allure_report

allure的安装和使用(windows环境)

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

  1. 选择一个版本(windows下载.zip包就可以)
    下载完直接解压就好了(记住路径)
    打开包,打到bin目录,找到allure.bat双击运行

  2. 配置allure系统环境变量
    【计算机–属性–高级系统设置–环境变量–系统变量–path–编辑】
    环境变量添加刚才解压时allure的地址 放bin文件的路径:E:\tools\allure-2.30.0\bin

  3. 检验环境变量配置成功:打开终端命令行,输入:allure

6. 集成持续集成工具

将测试框架集成到持续集成工具中,实现自动化测试。
持续集成工具:Jenkins、GitLab CI等。

7. 文档和维护

编写详细的文档,包括项目说明、使用指南和维护手册。

相关文章:

python + Pytest + requests 的接口自动化步骤

pythonpytestrequestallureyaml接口自动化测试项目实战 开发环境准备 1. jdk 下载 Java官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装: https://blog.csdn.net/VA_AV/article/details/138…...

基于若依的ruoyi-nbcio流程管理系统修正自定义业务表单的回写bug

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…...

GD32 MCU上电跌落导致启动异常如何解决

大家是否碰到过MCU上电过程中存在电源波动或者电压跌落导致MCU启动异常的问题?本视频将会为大家讲解可能的原因以及解决方法: GD32 MCU上下电复位波形如下图所示,上电过程中如果存在吃电的模块,比如wifi模块/4G模块/开启某块电路…...

安防视频监控/视频汇聚EasyCVR平台浏览器http可以播放,https不能播放,如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T 28181协议、部标JT808、GA/T 1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SD…...

rust + python+ libtorch

1: 环境,ubuntu 1.1 rust : rust-1.79.0 (在官方下载linux版本后,解压文件夹,内部有个install的sh文件,可安装) 安装成功测试:cargo --version 1.2 python3.10 (直接使用apt install pytho…...

ts检验-变量的类型不会包含 undefined的几种处理方法

文章目录 1. 确认索引是否存在2. 使用非空断言&#xff08;Non-null assertion&#xff09;3. 使用默认值4. 类型断言&#xff08;Type Assertion&#xff09;综合示例 import { AxiosPromise } from axios;type ApiFunction (params: any) > AxiosPromise<any>;type…...

springboot 集成minio,启动报错

springboot 集成 minio 8.5.10 报错 *************************** APPLICATION FAILED TO START *************************** Description: An attempt was made to call a method that does not exist. The attempt was made from the following location: io.minio.S3Base.…...

bignumber.js库,解决前端小数精度问题

bignumber.js 是一个 JavaScript 库&#xff0c;用于执行任意精度的十进制运算&#xff0c;特别适合处理大数字和需要高精度运算的情况。以下是一些 bignumber.js 库中的常用方法及其简要解释&#xff1a; 初始化 首先&#xff0c;你需要安装 bignumber.js 库&#xff1a; n…...

Java爬虫安全策略:防止TikTok音频抓取过程中的请求被拦截

摘要 在当今互联网时代&#xff0c;数据采集已成为获取信息的重要手段。然而&#xff0c;随着反爬虫技术的不断进步&#xff0c;爬虫开发者面临着越来越多的挑战。本文将探讨Java爬虫在抓取TikTok音频时的安全策略&#xff0c;包括如何防止请求被拦截&#xff0c;以及如何提高…...

通过手机控制家用电器的一个程序的设计(一)

一、概述 设计一款安卓平台上的家庭智能控制软件&#xff0c;通过语音识别指令控制家用电器。该软件结合离线语音识别技术、红外线和WIFI通讯技术&#xff0c;实现对家电的智能控制&#xff0c;如开关机、调温度、调频道等操作。 二、主要功能模块 离线语音识别模块 功能&…...

批量提取PDF指定区域内容到 Excel , 根据PDF文件第一行文字来自动重命名v1.3-附思路和代码实现

本次文章更新内容&#xff0c;图片以及扫描的PDF也可以支持批量提取指定区域内容了&#xff0c;主要是通过截图指定区域&#xff0c;然后使用OCR来识别该区域的文字来实现的&#xff0c;所以精度可能会有点不够&#xff0c;但是如果是数字的话&#xff0c;问题不大&#xff1b;…...

【持续集成_05课_Linux部署SonarQube及结合开发项目部署】

一、Linux下安装SonarQube 1、安装sonarQube 前置条件&#xff1a;sonarQube不能使用root账号进行启动&#xff0c;所以需要创建普通用户及 其用户组 1&#xff09;创建组 2&#xff09;添加用户、组名、密码 3&#xff09;CMD上传qube文件-不能传到home路径下哦 4&#xff09…...

人像视频预处理【时间裁剪+画面裁切+调整帧率】

在视频处理中&#xff0c;cut&#xff08;裁剪&#xff09;、crop&#xff08;画面裁切&#xff09;和fps&#xff08;帧率调整&#xff09;这三个操作的顺序安排对最终的视频质量和效率有重要影响。以下是一种推荐的顺序和理由&#xff0c;旨在提高效率和减少错误&#xff1a;…...

SpringBoot+HttpClient实现文件上传下载

服务端&#xff1a;SpringBoot Controller package com.liliwei.controller;import java.io.File; import java.io.FileInputStream; import java.io.IOException;import javax.servlet.http.HttpServletResponse;import org.springframework.http.HttpHeaders; import org.s…...

QT--控件篇四

一、对话框 在软件开发中&#xff0c;对话框&#xff08;Dialog&#xff09;是一种常见的用户界面元素&#xff0c;用于与用户进行交互和获取信息。它通常以模态或非模态的形式出现&#xff0c;模态对话框会阻止用户与应用程序的其他部分交互&#xff0c;直到对话框关闭为止&a…...

opencv—常用函数学习_“干货“_2

目录 五、矩阵计算函数 归一化矩阵 (normalize) 转置矩阵 (transpose) 求矩阵的逆 (invert) 翻转矩阵 (flip) 旋转矩阵 (rotate) 求矩阵的行列式 (determinant) 求矩阵的迹 (trace) 求矩阵的特征值和特征向量 (eigen) 六、代数运算 矩阵加法 (add) 矩阵减法 (subtra…...

解析CSS与JavaScript的使用方法及ECMAScript语法规则

一、CSS的三种使用方式 CSS&#xff08;层叠样式表&#xff09;用于定义网页的样式和布局。以下是CSS的三种使用方式&#xff1a; 1. 内联样式 内联样式是最直接的应用方式&#xff0c;它通过HTML标签的style属性来定义。 代码示例&#xff1a; <h1 style"color: …...

从零开始学习嵌入式----结构体struct和union习题回顾

一、通过结构体和自定义函数实现成绩从大到小的排序&#xff0c;要求在主函数内定义结构体数组。 #include <stdio.h> //定义一个结构体类型 typedef struct Student {int age;char name[32];float score; } STU; //定义一个函数实现成绩从小到大的排序 void fun(STU *p…...

建筑产业网元宇宙的探索与实践

在数字化浪潮的推动下&#xff0c;建筑产业网正迈入一个全新的元宇宙时代。这一变革不仅为建筑设计、施工与管理带来了革新&#xff0c;也为整个行业注入了新的活力与创造力。本文将深入探讨建筑产业网元宇宙的特点、应用及未来趋势&#xff0c;带您领略其在建筑行业中的独特魅…...

比较RMI、HTTP+JSON/XML、gRPC

RMI&#xff08;Remote Method Invocation&#xff0c;远程方法调用&#xff09;、HTTPJSON/XML、gRPC是三种不同的技术或协议&#xff0c;它们各自在远程通信、数据传输和服务交互方面有不同的特点和应用场景。以下是对这三种技术的详细比较&#xff1a; 1. RMI&#xff08;R…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...