这是一个基于 Python、Pytest、Allure、YAML 和 Requests 构建的接口自动化测试框架,旨在提供一个简单易用的测试框架,帮助您高效地进行 API 测试。

项目结构

project
├── api
│   ├── __init__.py
│   ├── base.py
│   └── user.py
├── config
│   ├── __init__.py
│   └── config.yaml
├── report
├── tests
│   ├── __init__.py
│   └── test_user.py
├── utils
│   ├── __init__.py
│   ├── logger.py
│   └── utils.py
├── conftest.py
└── pytest.ini

配置文件 (config/config.yaml)

user:
  login:
    url: 'http://example.com/api/login'
    method: POST
    headers:
      Content-Type: 'application/json'
    body:
      username: test
      password: test123

基础类 (api/base.py)

import requests


class BaseApi:
    def __init__(self, url, method, headers=None, body=None):
        self.url = url
        self.method = method
        self.headers = headers
        self.body = body

    def send_request(self):
        if self.method == 'GET':
            response = requests.get(self.url, headers=self.headers)
        elif self.method == 'POST':
            response = requests.post(self.url, headers=self.headers, json=self.body)
        else:
            raise ValueError('Invalid request method')
        return response

    def parse_response(self, response):
        try:
            response_json = response.json()
        except ValueError:
            response_json = {}
        return response.status_code, response_json

接口类 (api/user.py)

from api.base import BaseApi


class UserApi(BaseApi):
    def __init__(self):
        super().__init__(url='', method='', headers=None, body=None)

    def login(self, username, password):
        self.url = 'http://example.com/api/login'
        self.method = 'POST'
        self.headers = {'Content-Type': 'application/json'}
        self.body = {'username': username, 'password': password}
        response = self.send_request()
        return self.parse_response(response)

测试用例 (tests/test_user.py)

import allure
from api.user import UserApi


@allure.feature('用户接口')
class TestUser:
    @allure.story('登录接口')
    def test_login(self):
        user_api = UserApi()
        status_code, response_json = user_api.login('test', 'test123')
        assert status_code == 200
        assert response_json['code'] == 0

pytest 配置文件 (pytest.ini)

[pytest]
addopts = -s --alluredir=report
testpaths = tests
python_files = test_*.py
python_classes = Test*
python_functions = test_*
markers =
    smoke: Run the smoke tests
    regression: Run the regression tests

[allure]
clean_alluredir = true

运行测试

  1. 使用 pytest --alluredir=report 命令运行测试并生成测试报告。
  2. 使用 allure serve report 命令在浏览器中查看测试报告。

总结

以上是一个基本的接口自动化测试框架,您可以根据自己的需求进行扩展和完善。建议您使用 pip install -r requirements.txt 命令安装依赖库。

提示:

  • 您可以根据需要添加其他接口类和测试用例。
  • 您可以使用 allure 的更多功能来生成更详细的测试报告。
  • 您可以使用 pytest 的更多功能来进行更复杂的测试。
  • 您可以使用 yaml 来配置更复杂的测试数据。
  • 您可以使用 requests 的更多功能来发送更复杂的请求。

注意:

  • 请根据实际情况修改配置文件和代码。
  • 请使用您自己的 API 接口和测试数据进行测试。
  • 请使用 pip 命令安装必要的依赖库。
  • 请参考 pytestallure 的官方文档来了解更多功能。
Python 接口自动化测试框架:Pytest + Allure + YAML + Requests

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

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