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

news/2024/7/7 22:23:08

目录

    • 测试需求
    • 实现思路
    • 框架
      • 代码实例
      • 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://lihuaxi.xjx100.cn/news/2131104.html

相关文章

​如何用“Dreamina”进行文生图​

文生图,顾名思义,就是用文字描述来生成图片。近年来,随着人工智能技术的进步,文生图技术也逐渐成熟,并逐渐应用于各种领域,例如设计、创作、娱乐等等。 本文将介绍如何使用“Dreamina”进行文生图。 步骤…

dnf手游:如何利用副本和任务快速积累泰拉财富?

DNF手游中,搬砖赚钱的方式多种多样,其中利用副本和任务是一种快速赚取泰拉的有效途径。本攻略将介绍如何通过参与副本和任务来获取泰拉,帮助玩家在游戏中获得更多的经济收益。 一、认识游戏中的泰拉 在DNF手游中,泰拉是一种主要的…

Zabbix6 - Centos7源码编译部署HA高可用集群手册

Zabbix6 - Centos7源码编译部署HA高可用集群手册 HA高可用集群 总所周知,在我们IT运维的圈圈中,HA高可用集群服务算是逼格最高的吧也是运维里保障力度最大的环境。 HA是HighlyAvailable缩写,是双机集群系统简称,提高可用性集群,是保证业务连续性的有效解决方案,一般有两个…

Doris删除数据工具

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 对于Doris的 Unique 模型,在删除数据的时候只能根据key删除,如果使用其他条件就会报错 整体架构流程 先获得表的key,然后在通过输入的条件获得key的所有值,最后通过key的…

智能数据建模软件DTEmpower 2024R1新版本功能介绍

DTEmpower是由天洑软件自主研发的一款通用的智能数据建模软件,致力于帮助工程师及工科专业背景学生,利用工业领域中的仿真、试验、测量等各类数据进行挖掘分析,建立高质量的数据模型,实现快速设计评估、实时仿真预测、系统参数预警…

3.亿级积分数据分库分表:ShardingSphere官方提供的平滑数据迁移方案介绍,有什么缺点呢?

前面的 2.亿级积分数据分库分表:增量数据同步之代码双写,为什么没用Canal? 博客中介绍了实现平滑数据迁移的两种方案:Canal监听MySQL的binlog、代码双写,也分别介绍了两种方案的实现原理及优缺点,最后基于…

【Node.js从基础到高级运用】十九、Node.js 捕获错误之“未捕获的异常”

引言 在 Node.js 应用程序中,错误处理是保证应用稳定性和可靠性的关键部分。特别是“未捕获的异常”(uncaught exceptions),如果不妥善处理,很可能会导致整个进程崩溃。在本文中,我们将探讨如何在 Node.js …

Composer常见错误解决

Composer 是 PHP 社区广泛使用的一个依赖管理工具,它帮助开发者定义、管理和安装项目所需的库。在使用 Composer 的过程中,可能会遇到各种错误和问题。以下是一些常见的 Composer 错误及其解决方法: 1. 内存限制错误 错误信息:P…