帮我用python+pytest+requests写个百度的接口自动化测试项目
时间: 2023-10-05 12:08:57 浏览: 87
好的,我会尽力帮助你解决这个问题。
首先,我们需要安装 pytest 和 requests 库。可以使用以下命令在命令行中安装:
```
pip install pytest
pip install requests
```
然后,我们可以开始编写测试代码。可以参考以下代码作为模板:
```python
import requests
import pytest
# 测试用例
def test_baidu_api():
# 定义请求url和参数
url = "https://www.baidu.com/s"
params = {"wd": "pytest"}
# 发送get请求
response = requests.get(url, params=params)
# 判断响应状态码是否为200
assert response.status_code == 200
# 判断结果是否包含pytest
assert "pytest" in response.text
# 执行测试
if __name__ == '__main__':
pytest.main("-q test_baidu.py")
```
这个测试用例通过访问百度搜索,搜索关键词 "pytest",并检查响应是否包含 "pytest" 来测试接口是否正常工作。
你可以按照这个模板,根据需要编写自己的接口自动化测试用例。希望能够对你有所帮助。
相关问题
设计一套python+pytest+requests+log的接口接口自动化框架
以下是一套基于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的日志记录接口自动化框架的设计。
帮我写一个接口自动化框架:python+pytest+requests
好的,下面是一个简单的接口自动化框架:
1. 安装依赖库
```
pip install pytest
pip install requests
```
2. 创建项目目录结构
```
project
├── api
│ ├── __init__.py
│ └── user_api.py
├── config
│ └── config.ini
├── testcases
│ ├── __init__.py
│ └── test_user_api.py
├── conftest.py
└── pytest.ini
```
3. 编写配置文件
config/config.ini
```
[host]
url = http://localhost:8080/api/
```
4. 编写 API 接口封装
api/user_api.py
```python
import requests
import json
from configparser import ConfigParser
class UserApi:
def __init__(self):
self.config = ConfigParser()
self.config.read('config/config.ini')
self.url = self.config.get('host', 'url')
def get_user(self, user_id):
url = self.url + f'user/{user_id}'
response = requests.get(url)
return json.loads(response.text)
def add_user(self, data):
url = self.url + 'user'
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=json.dumps(data), headers=headers)
return json.loads(response.text)
def update_user(self, user_id, data):
url = self.url + f'user/{user_id}'
headers = {'Content-Type': 'application/json'}
response = requests.put(url, data=json.dumps(data), headers=headers)
return json.loads(response.text)
def delete_user(self, user_id):
url = self.url + f'user/{user_id}'
response = requests.delete(url)
return json.loads(response.text)
```
5. 编写测试用例
testcases/test_user_api.py
```python
from api.user_api import UserApi
class TestUserApi:
def setup_class(self):
self.api = UserApi()
def test_get_user(self):
user_id = 1
user = self.api.get_user(user_id)
assert user['id'] == user_id
def test_add_user(self):
data = {'name': 'test', 'age': 20}
user = self.api.add_user(data)
assert user['name'] == data['name']
def test_update_user(self):
user_id = 1
data = {'name': 'test1'}
user = self.api.update_user(user_id, data)
assert user['name'] == data['name']
def test_delete_user(self):
user_id = 1
user = self.api.delete_user(user_id)
assert user['id'] == user_id
```
6. 运行测试
在项目根目录下运行以下命令:
```
pytest
```
运行结果如下:
```
============================= test session starts ==============================
platform win32 -- Python 3.9.5, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: D:\project
plugins: Faker-8.13.0
collected 4 items
testcases\test_user_api.py .... [100%]
============================== 4 passed in 0.48s ==============================
```
以上就是一个简单的接口自动化框架,你可以根据实际情况进行修改和扩展。
阅读全文