【Python】python+requests+excel+unittest+ddt实现接口自动化实例

目录

    • 测试需求
    • 实现思路
    • 框架
      • 代码实例
      • 1. 环境准备和配置文件
      • 2. Excel接口数据及测试结果
      • 3. API封装
      • 4. 读取Excel数据
      • 5. 测试用例
      • 6. 日志和配置文件处理
      • 7. HTMLTestRunner生成可视化的html报告
      • 8. 报告通过飞书/邮件发送
        • 报告通过飞书发送
        • 报告通过邮件发送
      • 9. 入口函数
      • 10. 飞书Webhook发送消息
      • 11. 更新`run_tests.py`以使用`feishu_module`
      • 12. 配置文件`config.ini`
      • 13. 注意事项

测试需求

需要测试的接口场景为:6个接口,分别为登录接口,新建项目接口,导入图片接口,图片识别接口,保存接口,退出登录

实现思路

实现接口自动化测试需要按照一系列步骤来搭建框架和编写代码。下面是一个简化的流程,用于指导你完成整个项目。

1. 环境准备

  • 安装Python环境(推荐Python 3.x版本)
  • 安装必要的库:requests, openpyxl, unittest, ddt, logging, beautifulsoup4, lxml 等。
pip install requests openpyxl unittest ddt logging beautifulsoup4 lxml

2. Excel接口数据及测试结果

  • 使用Excel表格管理接口测试数据,包括请求参数、预期结果等。
  • 使用openpyxl库读取Excel数据。

** 3. 测试用例**

  • 编写测试用例类,每个接口对应一个或多个测试用例。
  • 使用unittest框架编写测试方法。
  • 使用ddt库实现数据驱动测试。

4. API封装

  • 创建一个API模块,用于封装所有接口的请求方法。
  • 每个接口方法接收必要的参数,并返回响应结果。

5. 读取Excel数据和登录功能封装

  • 创建一个数据读取模块,用于从Excel中读取测试数据。
  • 封装登录功能,在测试开始时进行登录,并获取必要的token或其他认证信息。

6. 初始化数据

  • 根据需要,编写初始化数据的脚本,如创建测试用户、项目等。

7. 日志

  • 使用logging库配置日志记录,记录测试过程中的关键信息。

8. 配置文件

  • 创建一个配置文件,用于管理API的基础URL、Excel文件路径、日志级别等。

9. HTMLTestRunner生成可视化的html报告

  • 使用HTMLTestRunner生成测试报告。
  • 在测试脚本执行完毕后调用HTMLTestRunner生成报告。

10. 报告通过飞书发送

  • 集成飞书机器人,发送测试报告。
  • 编写发送报告的脚本,使用飞书API发送消息。

11. 入口函数

  • 编写入口脚本,调用测试用例并生成报告
    入口函数通常是一个简单的脚本,它调用测试用例执行函数,并可能包含一些其他逻辑,如设置环境变量、读取配置文件等。

框架

一个完整的项目基础结构包括(此基础上可更加详细):

  • config/: 存放配置文件。
  • data/: 存放测试数据,如Excel文件。
  • logs/: 存放日志文件。
  • test_cases/: 存放测试用例文件。
  • utils/: 存放工具函数和模块,如API封装、Excel读取、日志设置等。
  • main.py: 入口脚本。
  • requirements.txt: 项目依赖文件。

代码实例

由于实现一个完整的接口自动化框架涉及到大量的代码和配置,我将提供一个简化版的框架搭建示例,并对关键部分进行详细的注释说明。请注意,实际项目中可能还需要进行更多的错误处理、日志记录、异常捕捉等。

首先,确保已经安装了必要的库:

pip install requests openpyxl unittest ddt beautifulsoup4 lxml

1. 环境准备和配置文件

创建一个配置文件config.ini

[API]
base_url = http://your-api-endpoint.com/api/v1[EXCEL]
data_file = test_data.xlsx
sheet_name = TestCases[LOGGING]
log_file = test.log
log_level = INFO[FEISHU]
webhook_url = https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxx

2. Excel接口数据及测试结果

test_data.xlsx中准备测试数据,包括请求参数和预期结果。以下实例EXCEL参考

在这里插入图片描述

3. API封装

api_module.py:

import requests
from configparser import ConfigParserconfig = ConfigParser()
config.read('config.ini')class API:def __init__(self):self.base_url = config.get('API', 'base_url')self.session = requests.Session()self.headers = {'Content-Type': 'application/json'}self.token = Nonedef login(self, username, password):url = f"{self.base_url}/login"data = {'username': username, 'password': password}response = self.session.post(url, json=data, headers=self.headers)if response.status_code == 200:self.token = response.json().get('token')return Truereturn Falsedef create_project(self, project_data):# 假设token在header中传递headers = self.headers.copy()if self.token:headers['Authorization'] = f'Bearer {self.token}'url = f"{self.base_url}/project"response = self.session.post(url, json=project_data, headers=headers)return response# ... 其他接口方法

4. 读取Excel数据

excel_module.py:

import openpyxl
from configparser import ConfigParserconfig = ConfigParser()
config.read('config.ini')def read_excel_data():data_file = config.get('EXCEL', 'data_file')sheet_name = config.get('EXCEL', 'sheet_name')wb = openpyxl.load_workbook(data_file)sheet = wb[sheet_name]test_cases = []

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

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

相关文章

Git 命令总览

Git Git 是一个版本控制系统,用于管理项目代码。通过 Git 可以轻松地进行代码的提交、更新和合并,确保项目代码的安全性和稳定性。同时,Git 还提供了丰富的工具和功能,如分支管理、代码审查、版本回退等,帮助开发更好…

五种免费的Python开发环境及具体下载网址

五种免费的Python开发环境及具体下载网址 目录 五种免费的Python开发环境及具体下载网址1.Anaconda2.PyCharm Community Edition3.Visual Studio Code4.Jupyter Notebook5. WinPython Python编程可选择不同的开发工具环境进行,本文介绍五种常用的,读者可…

vue前端工程化

前言 本文介绍的是有关于vue方面的前端工程化实践,主要通过实践操作让开发人员更好的理解整个前端工程化的流程。 本文通过开发准备阶段、开发阶段和开发完成三个阶段开介绍vue前端工程化的整体过程。 准备阶段 准备阶段我将其分为:框架选择、规范制…

JSP技术及其应用

目录 一、JSP 指令元素 1. page指令 二、JSP 注释 1. HTML注释: 2. Java注释: 3. JSP注释: 三、页面编码格式 1. pageEncoding: 2. contentType: 一、JSP 指令元素 JSP包含三种主要的指令元素:pag…

SQL-CRUD-2数据库实验

目录 第一关任务描述 相关知识 插入完整内容的行 插入选定内容的行 编程要求 测试说明 第一关代码 第二关任务描述 相关知识 删除表中的指定行 删除表中的所有行 编程要求 测试说明 第二关代码 第三关任务描述 相关知识 更新表中的指定行 编程要求 测试说明…

【Pytorch入门】小土堆PyTorch入门教程完整学习笔记(详细笔记并附练习代码 ipynb文件)

小土堆PyTorch入门教程笔记 最近在观看PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】顺便做点笔记,方便回看,同时也希望记录的笔记能够帮助到更多在入门的小伙伴~ 【注】仅记录个人觉得重要的知识&#xff0c…

cas学习2:idea里搭建cas项目

在上篇中介绍了cas服务在tomcat中怎么启动的及某j集成cas,这篇讲下idea怎么集成cas成一个项目,为后续的定制自己的项目做好铺垫。 1.下载CAS 模板 Overlay Template,我这里使用 Apereo CAS 5.3 版本,JDK需要1.8 地址&#xff1a…

JavaWeb后端——HTTP协议/Tomcat

HTTP HTTP协议:无状态,对事务处理没有记忆能力。每次请求-响应都是独立的。后一次请求不会记录前一次请求数据。缺点:多次请求之间不能共享数据,优点:速度快。 HTTP协议请求报文: HTTP协议响应报文&#x…

JVM篇详细分析

JVM总体图 程序计数器: 线程私有的,每个线程一份,内部保存字节码的行号,用于记录正在执行字节码指令的地址。(可通过javap -v XX.class命令查看) java堆: 线程共享的区域,用来保存对…

MATLAB:优化与规划问题

一、线性规划 % 线性规划(Linear programming, 简称LP) fcoff -[75 120 90 105]; % 目标函数系数向量 A [9 4 7 54 5 6 105 10 8 53 8 9 77 6 4 8]; % 约束不等式系数矩阵 b [3600 2900 3000 2800 2200]; % 约束不等式右端向量 Aeq []; % 约束等式系…

实验2-spark编程

实验目的 (1)通过实验掌握Spark的基本编程方法; (2)熟悉RDD到DataFrame的转化方法; (3)熟悉利用Spark管理来自不同数据源的数据。 实验内容 1.Spark基本操作 请参照…

ROUYI框架地址

1、原版系统地址与文档 https://gitee.com/dromara/RuoYi-Cloud-Plus?_fromgitee_search 源码地址 https://plus-doc.dromara.org/#/ruoyi-cloud-plus/home 后端地址 https://plus-doc.dromara.org/#/plus-ui/home 前端地址 前端代码地址: RuoYi-Vue-Plus: 多租户…

maven的依赖继承

先说一下创建子maven工程的步骤 继承 继承的作用:在父工程中,统一管理项目中的依赖信息,进行统一的版本控制 继承的背景是:对一个大型的项目进行了模块拆分,一个project下,创建了很多的module&#xff0c…

东特科技现已加入2024第13届国际生物发酵产品与技术装备展

参展企业介绍 温州东特科技有限公司是一家集设计、生产、销售及服务为一体的卫生级流体设备企业。专业从事各种乳食品、制药、化工、啤酒设备、不锈钢卫生级阀门,管件,视镜,及非标配件定制等产品的销售与服务。先进的设计理念专业的技术优势一…

matlab 复制点云

目录 一、概述1、算法概述2、主要函数3、参考文献二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 1、算法概述

docker部署ubuntu

仓库: https://hub.docker.com/search?qUbuntu 拉一个Ubuntu镜像 docker pull ubuntu:18.04 查看本地镜像: docker images 运行容器 docker run -itd --name ubuntu-18-001 ubuntu:18.04 通过ps命令可以查看正在运行的容器信息 docker ps 进入容器 最…

数据文件操作

一、什么是文件? 硬盘(磁盘)上的文件是文件。 在程序设计中,我们从文件功能的角度来分类的话,可以分为程序文件和数据文件。 1.1程序文件 程序文件包含源程序文件(后缀为.c),目标文…

CAN总线系列一:初识CAN总线

CAN协议简介 CAN是控制器局域网络(Controller Area Network)的简称,它是由研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11519),是国际上应用最广泛的现场总线之一。 一、总线特点&#…

夜晚水闸3D可视化:科技魔法点亮水利新纪元

在宁静的夜晚,当城市的霓虹灯逐渐暗淡,你是否曾想过,那些默默守护着城市安全的水闸,在科技的魔力下,正焕发出别样的光彩?今天,就让我们一起走进夜晚水闸3D模型,感受科技为水利带来的…

物联网实战--入门篇之(一)物联网概述

目录 一、前言 二、知识梳理 三、项目体验 四、项目分解 一、前言 近几年很多学校开设了物联网专业,但是确却地讲,物联网属于一个领域,包含了很多的专业或者说技能树,例如计算机、电子设计、传感器、单片机、网…