【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 ConfigParser

config = 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 = None

    def 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 True
        return False

    def 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 ConfigParser

config = 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.mfbz.cn/a/498434.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day46:WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

目录 数据猜解-库表列数据&字典 权限操作-文件&命令&交互式 提交方法-POST&HEAD&JSON 绕过模块-Tamper脚本-使用&开发 分析拓展-代理&调试&指纹&风险&等级 知识点: 1、注入工具-SQLMAP-常规猜解&字典配置 2、注入…

Nagios工具

一 nagios 相关概念 Nagios 是一款开源的免费网络监视工具,能有效监控 Windows、Linux 和 Unix 的主机状态,交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第 一时间通知网站运维人员,在状态恢复后…

33.HarmonyOS App(JAVA)鸿蒙系统app数据库增删改查

33.HarmonyOS App(JAVA)鸿蒙系统app数据库增删改查 关系数据库 关系对象数据库(ORM) 应用偏好数据库 分布式数据库 关系型数据库(Relational Database,RDB)是一种基于关系模型来管理数据的数据库。HarmonyOS关系型…

构建图书管理系统:使用Python的Tkinter和PIL模块

本博客将介绍如何使用Python中的Tkinter库和PIL(Python Imaging Library)模块构建一个简单的图书管理系统。图书管理系统是一个常见的应用程序,用于管理图书馆或个人收藏的图书信息。我们将逐步展示系统的功能,包括添加图书、查询…

【机器学习】包裹式特征选择之序列后向选择法

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进…

AJAX-项目优化(目录、基地址、token、请求拦截器)

目录管理 基地址存储 在utils/request.js配置axios请求基地址 作用&#xff1a;提取公共前缀地址&#xff0c;配置后axios请求时都会baseURLurl 填写API的公共前缀后&#xff0c;将js文件导入到html文件中 <script src"../../utils/request.js"></script&…

docker-compose mysql

使用docker-compose 部署 MySQL&#xff08;所有版本通用&#xff09; 一、拉取MySQL镜像 我这里使用的是MySQL8.0.18&#xff0c;可以自行选择需要的版本。 docker pull mysql:8.0.18二、创建挂载目录 mkdir -p /data/mysql8/log mkdir -p /data/mysql8/data mkdir -p /dat…

Django安装及第一个项目

1、安装python C:\Users\leell>py --version Python 3.10.6 可以看出我的环境python的版本3.10.6&#xff0c;比较新 2、 Python 虚拟环境创建 2.1 官网教程 目前&#xff0c;有两种常用工具可用于创建 Python 虚拟环境&#xff1a; venv 在 Python 3.3 及更高版本中默…

yarn的安装和使用:Yarn 快速上手指南

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

Ubuntu18.04 下Ublox F9P 实现RTK (利用CORS服务无需自建基站)

本内容参考如下连接:Ubuntu下Ublox F9P利用CORS服务无需自建基站实现RTK-CSDN博客 一、Ublox F9P 硬件模块示意图 图中展示了Ublox F9P的接口,包括串口2(`UART1`和`UART2`),USB1。需要人为通过u-center(Ublox F9P的显示软件)软件设置以下功能: Ublox通过`UART1`向PC端发送…

enscan自动化主域名信息收集

enscan下载 Releases wgpsec/ENScan_GO (github.com) 能查的分类 实操&#xff1a; 首先打开linux 的虚拟机、 然后把下面这个粘贴到虚拟机中 解压后打开命令行 初始化 ./enscan-0.0.16-linux-amd64 -v 命令参数如下 oppo信息收集 运行下面代码时 先去配置文件把coo…

|行业洞察·地产|《2023年中国物流地产行业报告-23页》

报告内容的详细解读&#xff1a; 1. 宏观经济背景 GDP增长&#xff1a;2023年二季度&#xff0c;中国国民生产总值&#xff08;GDP&#xff09;同比实际增长率为6.3%&#xff0c;显示出弱复苏态势&#xff0c;但增速较2022年第二季度有所下降。消费市场&#xff1a;消费市场同…

睿尔曼超轻量仿人机械臂之复合机器人底盘介绍及接口调用

机器人移动平台是一个包含完整成熟的感知、认知和定位导航能力的轮式机器人底盘产品级平台&#xff0c;产品致力于为各行业细分市场的商用轮式服务机器人提供一站式移动机器人解决方案&#xff0c;让合作伙伴专注在核心业务/人机交互的实现。以下是我司产品双臂机器人以及复合升…

九泰智库 | 医械周刊- Vol.18

⚖️ 法规动态 医疗器械并购风起&#xff0c;深交所联合北京经信局举办医疗器械座谈交流会 | 第一财经 近日&#xff0c;深圳证券交易所联合北京市经济和信息化局&#xff0c;举办“发挥深市医疗器械龙头引领作用&#xff0c;积极培育地方新质生产力”座谈交流活动。邀请了行业…

Linux 安装部署高性能缓存服务redis

Linux 系统安装Redis 5 注意事项&#xff1a; 下载Redis 文件包&#xff0c;并上传至linux服务上解压 tar -zxvf redis.tar安装&#xff1a; 编译 make PREFIX/usr/local/redis install配置&#xff1a; redis.conf daemonize yes bind 127.0.0.1 192.168.1.221 supervised…

TQ-DDL contention事件导致数据库hang死

数据库一天内多次hang住&#xff0c;最后只能重启恢复&#xff0c;操作系统及数据库版本&#xff1a;Windows Oracle 12.2.0.1检查hang住时间段alert日志&#xff0c;发现数据库多次重启日志&#xff0c;基本上是hang住然后手工重启。检查ash记录&#xff0c;发现重启前有很多“…

2024.3.28学习笔记

今日学习韩顺平java0200_韩顺平Java_对象机制练习_哔哩哔哩_bilibili 今日学习p286-p294 继承 继承可以解决代码复用&#xff0c;让我们的编程更加靠近人类思维&#xff0c;当多个类存在相同的属性和方法时&#xff0c;可以从这些类中抽象出父类&#xff0c;在父类中定义这些…

Rust编程(五)终章:查漏补缺

闭包 & 迭代器 闭包&#xff08;Closure&#xff09;通常是指词法闭包&#xff0c;是一个持有外部环境变量的函数。外部环境是指闭包定义时所在的词法作用域。外部环境变量&#xff0c;在函数式编程范式中也被称为自由变量&#xff0c;是指并不是在闭包内定义的变量。将自…

设计模式(1)——单例模式

目录 1. 单例模式的含义 2. 单例模式的四种常见方式 2.1 饿汉式经典加载方式 2.2 懒汉式加载方式 2.3 静态内部类方式加载 2.4 枚举类加载方式 1. 单例模式的含义 单例&#xff0c;简单来说就是单个实例&#xff0c;是一种常见的软件的设计模式。 一个类只实例化自己的…

社交科技:探索Facebook的技术创新

引言 在当今数字化社会中&#xff0c;社交媒体成为了人们日常生活不可或缺的一部分&#xff0c;而Facebook作为其中的领军者&#xff0c;一直在探索和应用新的技术&#xff0c;以满足用户的需求并不断提升用户体验。本文将深入探讨Facebook在技术创新方面的努力与成就&#xf…