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

news/2024/7/21 6:38:17 标签: python, excel, 自动化

目录

    • 测试需求
    • 实现思路
    • 框架
      • 代码实例
      • 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:

python">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:

python">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.niftyadmin.cn/n/5457330.html

相关文章

SAP BTP云上一个JVM与DB Connection纠缠的案例

前言 最近在CF (Cloud Foundry) 云平台上遇到一个比较经典的案例。因为牵扯到JVM (app进程)与数据库连接两大块,稍有不慎,很容易引起不快。 在云环境下,有时候相互扯皮的事蛮多。如果是DB的问题,就会找DB…

QT TCP和UDP网络编程

代表网络概念的QTcpSocket,QTcpServer和QUdpSocket,以及QNetworkRequest,QNetworkReply和QNetworkAccessManager之类的高级类来执行使用通用协议的网络操作。 它还提供了QNetworkConfiguration,QNetworkConfigurationManager和QNetworkSession等,实现承载…

二维双指针,滑动窗口

二维双指针 思路:考虑暴力做法,我们统计前缀和,然后枚举以 ( x 1 , y 1 ) (x_1,y_1) (x1​,y1​), ( x 2 , y 2 ) (x_2,y_2) (x2​,y2​)为左上,右下顶点的矩阵有多少是合法的,那么,这样的时间复杂度为 n 4…

|行业洞察·汽车|《2024新能源汽车行业及营销趋势报告-20页》

报告的主要内容解读: 新能源汽车行业概述及品牌分布: 近年来,中国新能源汽车销量增速高,市场占有率快速提升,成为汽车行业的重要增量。新能源汽车消费者趋向年轻化、女性化和高端化,对高科技、新体验有较高…

JAX 来构建一个基本的人工神经网络(ANN)进行分类任务

import jax.numpy as jnp from jax import grad, jit, vmap from jax import random from jax.experimental import optimizers from jax.nn import relu, softmax# 构建神经网络模型 def neural_network(params, x):for W, b in params:x jnp.dot(x, W) bx relu(x)return s…

专题:一个自制代码生成器(嵌入式脚本语言)之应用实例

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 专题:一个自制代码…

ubuntu 不产生core dump 文件

目标机器:UBuntu2004 目的:产生coredump 文件 ulimit -c //未设置之前 0ulimit -c unlimited //大小不受限设置 #将1写入到该文件里 echo 1 > /proc/sys/kernel/core_uses_pid mkdir /corefile #这里一定不要加“” echo “/corefile/core-%e…

新网站收录时间是多久,新建网站多久被百度收录

对于新建的网站而言,被搜索引擎收录是非常重要的一步,它标志着网站的正式上线和对外开放。然而,新网站被搜索引擎收录需要一定的时间,而且时间长短受多种因素影响。本文将探讨新网站收录需要多长时间,以及新建网站多久…