Python+Pytest+Allure搭建接口自动化测试框架

最近在用Python+Pytest+Allure搭建接口自动化测试框架

具体的框架要求:

1,使用Pytest进行测试用例编写和执行

2,使用Allure生成漂亮的测试报告

3,并且要求有断言方法

初步的框架设计如下,后期可以进一步添加很多功能

java 复制代码
import pytest
import requests
import allure

# 接口地址
BASE_URL = "https://www.xxx.com"

# 示例接口函数
def get_user_info(user_id):
    url = f"{BASE_URL}/users/{user_id}"
    response = requests.get(url)
    return response.json()

# 测试用例
@pytest.mark.parametrize("user_id", [1, 2, 3])
def test_get_user_info(user_id):
    with allure.step("调用接口获取用户信息"):
        user_info = get_user_info(user_id)
    with allure.step("断言用户信息"):
        assert user_info["id"] == user_id

# Pytest的fixture,用于在测试用例执行前后进行一些操作
@pytest.fixture(scope="session")
def setup_allure():
    allure_dir = "allure-results"
    allure_report_dir = "allure-report"
    allure.clean_reports(allure_dir)
    allure.clean_results(allure_dir)
    allure.environment(report="true")
    yield
    allure_cmd = f"allure generate {allure_dir} -o {allure_report_dir} --clean"
    allure_cmd += " && allure open --port 8080 allure-report"
    allure_cmd += " && allure serve allure-results"
    allure_cmd += " && allure report clean"
    allure_cmd += f" && rm -rf {allure_dir}"
    allure_cmd += f" && rm -rf {allure_report_dir}"
    allure_cmd += " && allure results clean"
    os.system(allure_cmd)

# 执行测试
if __name__ == "__main__":
    pytest.main(['-s', '-v', '--alluredir=allure-results'])

在这个框架中,首先定义了一个基本的接口测试用例 test_get_user_info,用于测试 get_user_info 函数是否能够正确返回用户信息。

另外使用 pytest.mark.parametrize 装饰器来指定多个用户ID作为参数进行测试。在测试用例中,可以使用 allure.step 来定义测试步骤,以便在Allure报告中展示清晰的测试步骤。

此外,这个框架还定义了一个 setup_allure fixture,用于在测试执行前清理旧的Allure结果,并在测试执行后生成Allure报告,并使用Allure命令行工具打开报告或服务报告。

相关推荐
天天要nx13 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
程序猿000001号15 小时前
探索Python的pytest库:简化单元测试的艺术
python·单元测试·pytest
爱学测试的雨果2 天前
分布式测试插件 pytest-xdist 使用详解
分布式·pytest
七灵微4 天前
【测试】Pytest
pytest
钱钱钱端4 天前
Pytest参数详解 — 基于命令行模式!
自动化测试·软件测试·python·jmeter·职场和发展·pytest·压力测试
blues_C5 天前
Pytest-Bdd vs Behave:选择最适合的 Python BDD 框架
自动化测试·python·pytest·测试框架·bdd
天天要nx5 天前
D101【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest
大霞上仙5 天前
pytest入门五:命令行参数
pytest
blues_C6 天前
Pytest-Bdd-Playwright 系列教程(17):标签管理(Tags)
自动化测试·pytest·bdd·tags
大霞上仙7 天前
pytest入门十:配置文件
pytest