设计一套python+pytest+requests+log的接口接口自动化框架
时间: 2023-09-22 14:07:03 浏览: 154
python+requests+pytest 接口自动化框架(1-4)
5星 · 资源好评率100%
以下是一套基于Python pytest和requests的日志记录接口自动化框架的设计:
1. 安装pytest和requests库
```
pip install pytest requests
```
2. 创建一个配置文件
在项目根目录下创建一个config.py文件,用于存储一些常量和配置信息,例如API的基本URL、请求头、日志文件路径等。
```python
API_BASE_URL = 'http://localhost:8080/api'
API_HEADERS = {'Content-Type': 'application/json'}
LOG_FILE_PATH = 'logs/test.log'
```
3. 创建一个测试用例
在tests目录下创建一个test_sample.py文件,用于编写测试用例。这里以测试一个获取用户列表的API接口为例。
```python
import pytest
import requests
from config import API_BASE_URL, API_HEADERS
def test_get_user_list():
url = f'{API_BASE_URL}/users'
response = requests.get(url, headers=API_HEADERS)
assert response.status_code == 200
assert len(response.json()) > 0
```
4. 创建一个日志记录器
在utils目录下创建一个logger.py文件,用于记录测试过程中的日志信息。
```python
import logging
from config import LOG_FILE_PATH
logging.basicConfig(filename=LOG_FILE_PATH, level=logging.INFO)
def log_info(msg):
logging.info(msg)
def log_error(msg):
logging.error(msg)
```
5. 创建一个pytest插件
在根目录下创建一个conftest.py文件,用于定义一个pytest插件,用于在测试用例执行前后记录日志信息。
```python
from datetime import datetime
import pytest
from utils.logger import log_info, log_error
@pytest.hookimpl
def pytest_runtest_logstart(nodeid, location):
log_info(f'Test Case: {nodeid} started at {datetime.now()}')
@pytest.hookimpl
def pytest_runtest_logfinish(nodeid, location):
log_info(f'Test Case: {nodeid} finished at {datetime.now()}')
@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport(item, call):
outcome = yield
rep = outcome.get_result()
if rep.when == 'call':
if rep.failed:
log_error(f"Test Case: {item.nodeid} failed with error: {rep.longrepr}")
else:
log_info(f"Test Case: {item.nodeid} passed")
```
6. 运行测试
在命令行中执行以下命令:
```
pytest -v tests/test_sample.py
```
执行完成后,可以在logs/test.log文件中查看测试过程中的日志信息。
以上就是一套基于Python pytest和requests的日志记录接口自动化框架的设计。
阅读全文