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命令行工具打开报告或服务报告。

相关推荐
程序员杰哥10 小时前
接口自动化测试之pytest 运行方式及前置后置封装
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
测试老哥15 小时前
Pytest+Selenium UI自动化测试实战实例
自动化测试·软件测试·python·selenium·测试工具·ui·pytest
水银嘻嘻20 小时前
07 APP 自动化- appium+pytest+allure框架封装
python·appium·自动化·pytest
天才测试猿1 天前
接口自动化测试之pytest接口关联框架封装
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
not coder2 天前
Pytest Fixture 详解
数据库·pytest
not coder3 天前
pytest 常见问题解答 (FAQ)
开发语言·python·pytest
程序员的世界你不懂3 天前
(1)pytest简介和环境准备
pytest
not coder3 天前
Pytest Fixture 是什么?
数据库·oracle·pytest
Tester_孙大壮3 天前
pytest中的元类思想与实战应用
pytest
<花开花落>3 天前
pytest 中 fixture 与类继承交互导致的问题
python·pytest