python pytest 最简单的接口自动化测试框架

最近由于工作的原因,需要开发一个接口自动化测试框架,使用pytest框架、数据驱动,并展示直观的测试报告。

具体的开发过程如下:

  1. 安装必要的库:
    • pytest:用于编写和运行测试用例。
    • requests:用于发送 HTTP 请求。
    • pytest-html:用于生成 HTML 格式的测试报告。

可以使用以下命令安装这些库:

pip install pytest requests pytest-html

  1. 创建测试用例: 编写测试用例,每个测试用例使用不同的数据进行测试。可以将测试数据存储在一个文件中,比如 CSV 或 JSON 文件。

  2. 使用pytest编写测试脚本: 使用pytest编写测试脚本,读取测试数据并执行测试。pytest提供了fixture功能,可以用于准备测试数据、执行测试和清理测试环境。

  3. 生成测试报告: 使用pytest-html插件生成 HTML 格式的测试报告,使测试结果更加直观和易于理解。

下面我最开始的版本,比较简单,感兴趣的可以进一步优化开发:

python 复制代码
# test_api.py
import pytest
import requests

@pytest.fixture
def base_url():
    return "https://www.xxxx.com/api"

@pytest.fixture(params=[
    ("/endpoint1", {"param1": "value1"}, 200),
    ("/endpoint2", {"param2": "value2"}, 404),
    # Add more test data as needed
])
def test_data(request):
    return request.param

def test_api(base_url, test_data):
    url, params, expected_status_code = test_data
    response = requests.get(base_url + url, params=params)
    assert response.status_code == expected_status_code

def pytest_generate_tests(metafunc):
    if "test_data" in metafunc.fixturenames:
        metafunc.parametrize("test_data", metafunc.module.test_data(), scope="function")

# 在命令行中运行测试:pytest test_api.py --html=report.html

上面只有一个基本的测试用例test_api,它使用fixture base_url提供的基本 URL 并发送 GET 请求,然后使用数据驱动的方式传递不同的测试数据。pytest_generate_tests 函数用于生成测试用例,它会根据 test_data fixture 提供的参数执行测试。

运行测试时,可以使用pytest命令,并使用--html选项指定要生成的测试报告的文件名。生成的报告将包含测试结果、测试用例名称、执行时间等信息,以及可视化的测试结果。

后期会进行扩展优化.......

相关推荐
怕浪猫4 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
高洁015 小时前
具身智能中的世界模型训练
人工智能·python·深度学习·机器学习·transformer
无线通信科研笔记5 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
朝朝辞暮i5 小时前
VLA 系统学习第 1 课:VLA 到底在干什么?
人工智能·python·计算机视觉·vla
2601_962885726 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
爱吃奥利奥_wen6 小时前
面向对象三板斧:封装、继承、多态,到底在“装“什么、“承“什么、“变“什么?
开发语言·经验分享·c#
北冥有鱼被烹6 小时前
VCSEL全景解析:与光模块NPO CPO的关系、市场量化分析与产业链影响
python
我可能是个假开发6 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
caoerzhong6 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·python·开源
正在走向自律7 小时前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas