【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.hqwc.cn/news/576281.html

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

相关文章

idea开发工具DEBUG调试java8stream流

1.在使用到stream()的行打断点 2.执行请求拦截到断点,依次按图点击 3.进入stream断点分析 4.如上图点击flat mode进入完整的每一步处理过程 5.Ok,完结

c++ 有关类的静态成员详细笔记

什么是静态成员? 别名也可以叫做静态数据成员,如果一个类建立了多个对象,那么每一个对象都会有自己的数据成员。这些值呢?互不相干,很好地实现了每一个对象之间的区别也就是所谓的封装和隐藏。但在有的时候&#xff0…

一、Go开发环境搭建

文章目录 1、开发工具2、开发环境配置3、Hello World4、语法 1、开发工具 https://code.visualstudio.com/download 2、开发环境配置 类比Java的JDK,go的SDK下载:https://studygolang.com/dl 解压: 配置环境变量path,将命令&quo…

企业年报组织机构代码查询入口

全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码,共9位组成; 组织机构代码在哪里怎么查询? 1、打开「词令」小程序; 2、打开词令小程序后&am…

免费VPS/云服务器整理汇总

随着互联网的普及和云计算技术的飞速发展,越来越多的人开始尝试使用VPS(Virtual Private Server,虚拟专用服务器)或者云服务器来部署自己的在线业务。本文将对免费VPS/云服务器进行整理汇总,助力大家轻松开启云计算之旅…

MySQL 数据库的日志管理、备份与恢复

一. 数据库备份 1.数据备份的重要性 备份的主要目的是灾难恢复。 在生产环境中,数据的安全性至关重要。 任何数据的丢失都可能产生严重的后果。 造成数据丢失的原因: 程序错误人为,操作错误,运算错误,磁盘故障灾难(如火灾、地震&#xff0…

Web Components使用(一)

在使用Web Components之前,我们先看看上一篇文章Web Components简介,其中提到了相关的接口、属性和方法。 正是这些接口、属性和方法才实现了Web Components的主要技术:Custom elements(自定义元素)、Shadow DOM&#…

element-ui autocomplete 组件源码分享

紧接着 input 组件的源码,分享带输入建议的 autocomplete 组件,在 element-ui 官方文档上,没有这个组件的 api 目录,它的 api 是和 input 组件的 api 在一起的,看完源码之后发现,源码当中 autocomplete 组件…

【管理咨询宝藏59】某大型汽车物流战略咨询报告

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏59】某大型汽车物流战略咨询报告 【格式】PDF 【关键词】HR调研、商业分析、管理咨询 【核心观点】 - 重新评估和调整商业模式,开拓…

葵花卫星影像应用场景及数据获取

一、卫星参数 葵花卫星是由中国航天科技集团公司研制的一颗光学遥感卫星,代号CAS-03。该卫星于2016年11月9日成功发射,位于地球同步轨道,轨道高度约为35786公里,倾角为0。卫星设计寿命为5年,搭载了高分辨率光学相机和多…

3D产品可视化SaaS

“我们正在走向衰退吗?” “我们已经陷入衰退了吗?” “我们正在步入衰退。” 过去几个月占据头条的问题和陈述引发了关于市场对每个行业影响的讨论和激烈辩论。 特别是对于科技行业来说,过去几周一直很动荡,围绕费用、增长和裁…

Unity3d使用Jenkins自动化打包(Windows)(一)

文章目录 前言一、安装JDK二、安装Jenkins三、Jenkins插件安装和使用基础操作 实战一基础操作 实战二 四、离线安装总结 前言 本篇旨在介绍基础的安装和操作流程,只需完成一次即可。后面的篇章将深入探讨如何利用Jenkins为Unity项目进行打包。 一、安装JDK 1、进入…