Python 接口自动化测试框架:Pytest + Allure + YAML + Requests
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/
参考链接
原文地址: https://www.cveoy.top/t/topic/lfkF 著作权归作者所有。请勿转载和采集!