pytest断言url
时间: 2023-12-16 22:27:43 浏览: 175
pytest可以使用assert语句进行断言,可以通过requests库获取url的响应内容,然后使用assert语句进行判断。以下是一个例子:
```python
import requests
def test_url():
url = "http://www.baidu.com"
res = requests.get(url)
assert res.status_code == 200, "请求失败"
```
在这个例子中,我们使用requests库获取了百度首页的响应内容,并使用assert语句判断响应状态码是否为200。如果状态码不为200,则会输出"请求失败"的错误信息。
相关问题
接口测试pytest获取返回值断言
在Python中,接口测试通常会利用第三方测试框架pytest来进行。如果你需要对HTTP请求(比如REST API)的结果进行返回值断言,可以结合requests库来发送请求,并使用pytest提供的assert功能检查响应。
首先,确保安装了`pytest`、`requests`库:
```bash
pip install pytest requests
```
然后,在编写测试用例时,你可以这样做:
```python
import pytest
import requests
def test_api_response():
url = "http://your-api-url.com/api-endpoint"
response = requests.get(url)
# 断言状态码
assert response.status_code == 200
# 如果返回的是json数据,可以用json()方法解析并进行更详细的断言
data = response.json()
assert 'key' in data and data['key'] == 'expected_value'
# 对于期望的特定返回值,可以设置fixture
@pytest.fixture
def expected_data():
return {'key': '预期结果'}
def test_api_content(expected_data):
assert response.json() == expected_data
# 调用测试函数
test_api_content()
```
在这个例子中,`response.status_code`用于检查HTTP响应的状态码,如果返回的不是200,那么断言就会失败。对于JSON格式的响应,我们使用`response.json()`将其转换成字典,然后进一步比较实际值和预期值。
记得在每个测试函数前加上`@pytest.mark.parametrize`或其他pytest装饰器来提供多种测试情况,或者针对不同的URL和预期结果进行测试。
pytest接口自动化断言封装
在pytest接口自动化中,我们可以通过封装断言函数来实现断言的重用,提高代码的可维护性和可读性。下面是一个示例:
```python
import json
def assert_code(response, expected_code):
"""
封装断言状态码的函数
:param response: 接口响应
:param expected_code: 预期状态码
"""
assert response.status_code == expected_code, f"响应状态码错误,预期为{expected_code},实际为{response.status_code}"
def assert_json(response, expected_json):
"""
封装断言json响应的函数
:param response: 接口响应
:param expected_json: 预期json响应
"""
assert response.headers['Content-Type'] == 'application/json', "响应头Content-Type不是application/json"
assert response.json() == json.loads(expected_json), f"响应json内容错误,预期为{expected_json},实际为{response.text}"
```
在上面的代码中,我们封装了两个断言函数,一个用于断言状态码,一个用于断言json响应。这样,在编写测试用例时,我们只需要调用这些函数即可,如下所示:
```python
def test_login():
# 发送登录请求
response = requests.post(url, data=data)
# 断言状态码
assert_code(response, 200)
# 断言json响应
assert_json(response, '{"code": 0, "msg": "登录成功"}')
```
这样,我们就可以通过封装断言函数来实现断言的重用,提高代码的可维护性和可读性。
阅读全文