返回

在自动化测试中整合openpyxl 和 requests

后端

利用 openpyxl 和 requests 库实现基于 Excel 表格的自动化接口测试

自动化测试已成为现代软件开发中不可或缺的一部分,它有助于确保软件的质量和可靠性。Python 的强大功能和丰富的库使其成为自动化测试的理想选择。在本文中,我们将介绍如何将 openpyxl 和 requests 库结合起来,从 Excel 表格中获取数据并进行自动化接口测试,从而简化测试流程并提高效率。

1. 环境准备

首先,我们需要确保已安装 Python 3 及其 pip 包管理器。然后,使用以下命令安装 openpyxl 和 requests 库:

pip install openpyxl
pip install requests

2. 创建 Excel 表格

我们要从 Excel 表格中获取测试数据。创建包含以下列的表格:

  • 接口名称:接口名称或 ID
  • 请求方式:GET、POST、PUT 等
  • 请求 URL:接口 URL
  • 请求参数:以字典或 JSON 格式存储的参数
  • 预期结果:预期状态码和响应内容

3. 使用 openpyxl 读取 Excel 表格

import openpyxl

# 打开 Excel 表格
workbook = openpyxl.load_workbook('test_data.xlsx')

# 获取第一个工作表
sheet = workbook.active

# 获取所有行
rows = sheet.rows

# 遍历每一行
for row in rows:
    # 获取每一行的单元格
    cells = row.cells

    # 提取单元格的值
    interface_name = cells[0].value
    request_method = cells[1].value
    request_url = cells[2].value
    request_params = cells[3].value
    expected_result = cells[4].value

    # 将数据存储到字典中
    test_data = {
        "interface_name": interface_name,
        "request_method": request_method,
        "request_url": request_url,
        "request_params": request_params,
        "expected_result": expected_result,
    }

    # 执行测试
    perform_test(test_data)

4. 使用 requests 库发送接口请求

import requests

def perform_test(test_data):
    # 发送请求
    if test_data["request_method"] == "GET":
        response = requests.get(test_data["request_url"], params=test_data["request_params"])
    elif test_data["request_method"] == "POST":
        response = requests.post(test_data["request_url"], data=test_data["request_params"])
    # 其他请求方法

    # 验证响应
    validate_response(response, test_data["expected_result"])

5. 验证接口测试结果

def validate_response(response, expected_result):
    # 检查状态码
    if response.status_code != expected_result["status_code"]:
        raise Exception("状态码不一致")

    # 检查响应内容
    if response.content != expected_result["content"]:
        raise Exception("响应内容不一致")

    # 打印测试结果
    print(f"接口 {test_data['interface_name']} 测试通过")

结论

通过将 openpyxl 库和 requests 库整合起来,我们可以自动化接口测试流程,并利用 Excel 表格作为测试数据来源。这种方法简化了测试用例创建,提高了测试覆盖率和准确性。

常见问题解答

Q1:我如何将请求参数存储为 JSON 格式?
A1:你可以使用 json.dumps() 函数将字典转换为 JSON 字符串,然后将其分配给 request_params 字典键。

Q2:是否可以同时发送多个请求?
A2:是的,你可以使用 requests 的 Session 对象来同时发送多个请求,并跟踪每个请求的响应。

Q3:如何处理异常和错误?
A3:在 perform_test() 函数中,你可以使用 try...except 块来捕获异常和错误,并记录或重新引发它们。

Q4:如何将测试结果记录到文件中?
A4:你可以使用 logging 模块将测试结果记录到文件中,并设置适当的日志级别。

Q5:是否可以将测试框架与这种方法集成?
A5:是的,你可以将这种方法与像 pytest 或 unittest 这样的测试框架集成,以利用其高级功能和报告工具。