Python 接口自动化测试框架:Pytest + Allure + YAML + Requests

本文将介绍如何使用 Python、Pytest、Allure、YAML 和 Requests 构建一套接口自动化测试框架。

1. 安装依赖库

pip install pytext allure-pytest requests PyYAML

2. 目录结构

.
├── api
│   ├── __init__.py
│   ├── config.py
│   └── users.py
├── common
│   ├── __init__.py
│   ├── logger.py
│   └── utils.py
├── report
├── testcases
│   ├── __init__.py
│   └── test_users.py
├── .gitignore
├── allure.yaml
├── pytest.ini
├── README.md
└── requirements.txt

3. 配置文件

api/config.py

import os

BASE_URL = os.getenv('BASE_URL', 'http://localhost:8000')

4. 接口封装

api/users.py

import requests
from api.config import BASE_URL


def get_user(user_id):
    url = f'{BASE_URL}/users/{user_id}'
    return requests.get(url)


def create_user(user_data):
    url = f'{BASE_URL}/users'
    return requests.post(url, json=user_data)


def update_user(user_id, user_data):
    url = f'{BASE_URL}/users/{user_id}'
    return requests.put(url, json=user_data)


def delete_user(user_id):
    url = f'{BASE_URL}/users/{user_id}'
    return requests.delete(url)

5. 测试用例

testcases/test_users.py

import allure
import pytest
from api.users import create_user, get_user, update_user, delete_user
from common.utils import generate_random_string


@allure.feature('用户管理')
class TestUsers:

    @allure.story('创建用户')
    def test_create_user(self):
        user_data = {
            'name': generate_random_string(6),
            'age': 18,
            'gender': 'male'
        }
        with allure.step('调用创建用户接口'):
            response = create_user(user_data)
        with allure.step('校验返回结果'):
            assert response.status_code == 201
            assert response.json()['name'] == user_data['name']

    @allure.story('获取用户')
    def test_get_user(self):
        user_id = 1
        with allure.step('调用获取用户接口'):
            response = get_user(user_id)
        with allure.step('校验返回结果'):
            assert response.status_code == 200
            assert response.json()['id'] == user_id

    @allure.story('更新用户')
    def test_update_user(self):
        user_id = 1
        user_data = {
            'name': generate_random_string(6),
            'age': 20,
            'gender': 'female'
        }
        with allure.step('调用更新用户接口'):
            response = update_user(user_id, user_data)
        with allure.step('校验返回结果'):
            assert response.status_code == 200
            assert response.json()['name'] == user_data['name']

    @allure.story('删除用户')
    def test_delete_user(self):
        user_id = 1
        with allure.step('调用删除用户接口'):
            response = delete_user(user_id)
        with allure.step('校验返回结果'):
            assert response.status_code == 204

6. 执行测试

pytest --alluredir report/

7. 生成报告

allure serve report/

参考链接

Python 接口自动化测试框架:Pytest + Allure + YAML + Requests

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

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