当前位置: 首页 > 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. 文档和维护

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SQL基础 | NOT NULL 约束介绍
  • 7.13实训日志
  • Qt易错总结
  • Chrome浏览器的Profile数据内容简介
  • 一边吃谷一边痛,二次元距离三次元还有多远?
  • 电视盒子变身NAS之安装termux
  • IDEA中Git常用操作及Git存储原理
  • LeetCode-计数质数
  • 分享 .NET EF6 查询并返回树形结构数据的 2 个思路和具体实现方法
  • [AHK] WinHttpRequest.5.1报错 0x80092004 找不到对象或属性
  • 动手学深度学习——5.卷积神经网络
  • LLM大模型ChatGLM-6B 本地部署与运行
  • 算法工程师面试题一
  • Git配置笔记
  • 环境配置|PyCharm——Pycharm本地项目打包上传到Github仓库的操作步骤
  • 【node学习】协程
  • 【翻译】babel对TC39装饰器草案的实现
  • CAP 一致性协议及应用解析
  • FastReport在线报表设计器工作原理
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • node.js
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue2.0 实现互斥
  • Vue2.x学习三:事件处理生命周期钩子
  • Vue小说阅读器(仿追书神器)
  • 从地狱到天堂,Node 回调向 async/await 转变
  • 从重复到重用
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 免费小说阅读小程序
  • 项目实战-Api的解决方案
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • # 利刃出鞘_Tomcat 核心原理解析(八)-- Tomcat 集群
  • #QT(一种朴素的计算器实现方法)
  • #QT项目实战(天气预报)
  • #微信小程序(布局、渲染层基础知识)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C#)一个最简单的链表类
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)c52学习之旅-简单了解单片机
  • (二)windows配置JDK环境
  • (三)模仿学习-Action数据的模仿
  • .gitignore文件—git忽略文件
  • .JPG图片,各种压缩率下的文件尺寸
  • .Net Core中Quartz的使用方法
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • .NetCore发布到IIS
  • .Net各种迷惑命名解释
  • .net通用权限框架B/S (三)--MODEL层(2)
  • @DataRedisTest测试redis从未如此丝滑
  • []我的函数库
  • [AIGC] HashMap的扩容与缩容:动态调整容量以提高性能
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子