Python 接口自动化框架:Pytest + Allure + YAML + Requests 零代码封装

本文将介绍如何使用 Python、Pytest、Allure、YAML 和 Requests 库构建一个接口自动化框架,并实现零代码封装,以便轻松编写和维护测试用例,生成详细的测试报告。

框架结构

框架主要包括以下几个部分:

  • 测试框架:Pytest - 一个强大的测试框架,提供易于编写和维护的测试用例,以及丰富的插件和扩展功能。
  • 测试报告:Allure - 生成丰富的测试报告和图表,帮助更好地理解测试结果。
  • 数据存储:YAML - 使用 YAML 文件存储测试数据和配置信息,实现数据和代码分离,方便维护和更新。
  • HTTP 请求库:Requests - 用于发送 HTTP 请求和处理响应,提供简单易用的接口。
  • 代码封装 - 封装常用的功能,例如登录、退出、获取 Token 等,提高测试用例的可重用性。

代码示例

1. 测试用例文件 (test_example.py)

import pytest
from common.utils import get_token, login
from common.api import Api

@pytest.fixture(scope='module')
def api():
    token = get_token()
    return Api(token=token)

class TestExample:
    def test_get_user(self, api):
        response = api.get('/users/1')
        assert response.status_code == 200
        assert response.json()['name'] == 'John Doe'

    def test_create_user(self, api):
        response = api.post('/users', data={'name': 'Jane Doe'})
        assert response.status_code == 201

2. 公共方法文件 (common/utils.py)

import requests

def get_token():
    response = requests.post('https://api.example.com/auth', data={'username': 'user', 'password': 'password'})
    return response.json()['token']

def login(username, password):
    # 登录逻辑
    pass

3. API 接口封装文件 (common/api.py)

import requests

class Api:
    def __init__(self, token):
        self.token = token
        self.base_url = 'https://api.example.com'

    def get(self, url, params=None):
        headers = {'Authorization': f'Bearer {self.token}'}  # 添加 token
        response = requests.get(f'{self.base_url}{url}', headers=headers, params=params)
        return response

    def post(self, url, data=None):
        headers = {'Authorization': f'Bearer {self.token}'}  # 添加 token
        response = requests.post(f'{self.base_url}{url}', headers=headers, data=data)
        return response

总结

通过使用 Pytest、Allure、YAML 和 Requests 库,并结合代码封装,可以构建一个功能强大、易于维护的接口自动化框架,显著提高测试效率和代码质量。


原文地址: https://www.cveoy.top/t/topic/lfkI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录