python+pytest接口自动化
时间: 2023-04-28 13:06:20 浏览: 102
Python和pytest是一种常用的接口自动化测试工具,可以用于编写和执行接口测试用例,实现自动化测试的目的。Python是一种高级编程语言,具有简洁、易读、易学等特点,可以快速编写测试脚本;而pytest是一种基于Python的测试框架,提供了丰富的测试功能和插件,可以方便地管理测试用例、执行测试、生成测试报告等。使用Python和pytest进行接口自动化测试,可以提高测试效率、减少测试成本、提高测试质量。
相关问题
python+pytest实现接口自动化
接口自动化测试是指通过编写测试脚本,模拟用户请求接口,验证接口返回结果是否符合预期。而pytest是Python中的一种测试框架,可以方便地编写测试用例和运行测试脚本。
下面是一个简单的示例,用pytest实现接口自动化测试:
1. 安装pytest和requests库
```
pip install pytest
pip install requests
```
2. 编写测试用例
新建一个test_api.py文件,编写测试用例代码:
```python
import requests
def test_login():
url = 'http://api.example.com/login'
data = {'username': 'test', 'password': '123456'}
resp = requests.post(url, data=data)
assert resp.status_code == 200
assert resp.json()['code'] == 0
assert resp.json()['message'] == 'success'
```
这个测试用例模拟了一个登录接口,发送post请求,验证返回结果的状态码、code和message是否符合预期。
3. 运行测试脚本
在终端中进入测试用例所在目录,执行以下命令:
```
pytest test_api.py
```
pytest会自动查找所有以test开头的函数,并执行它们。如果测试用例通过,会输出绿色的“PASSED”信息;如果失败,会输出红色的“FAILED”信息。
以上就是一个简单的接口自动化测试示例,当然实际情况中还会有更多的测试用例、数据驱动、报告生成等需求。但通过这个例子可以初步了解pytest和requests库的基本用法。
帮我写一下python+pytest接口自动化的断言封装
以下是一个简单的Python Pytest接口自动化的断言封装:
```python
import json
def assert_status_code(response, status_code):
assert response.status_code == status_code, f"Expected status code: {status_code}. Actual status code: {response.status_code}."
def assert_json_value(response, key, expected_value):
json_response = json.loads(response.text)
assert json_response[key] == expected_value, f"Expected {key}: {expected_value}. Actual {key}: {json_response[key]}."
def assert_json_key(response, key):
json_response = json.loads(response.text)
assert key in json_response, f"Expected {key} in response. Actual response: {response.text}."
```
这个断言封装包含了三个常用的断言:
1. `assert_status_code(response, status_code)`:用于验证接口返回的状态码是否与预期的状态码相同。
2. `assert_json_value(response, key, expected_value)`:用于验证接口返回的JSON响应中的指定键的值是否等于预期值。
3. `assert_json_key(response, key)`:用于验证接口返回的JSON响应中是否包含指定的键。
这些断言可以在测试用例中使用,以确保接口的正确性。例如:
```python
def test_get_user_info(api_client):
response = api_client.get('/users/123')
assert_status_code(response, 200)
assert_json_key(response, 'name')
assert_json_value(response, 'name', 'John Smith')
```
在这个例子中,我们使用了三个断言来验证接口是否正确返回了用户信息。如果有任何一个断言失败,则测试用例将失败,并显示相应的错误消息。