pytest接口自动化封装
时间: 2023-10-07 11:10:15 浏览: 107
python+requests+pytest 接口自动化框架(7)
5星 · 资源好评率100%
pytest是Python中比较流行的测试框架之一,可以用于接口自动化测试。下面是一个简单的pytest接口自动化封装示例:
```python
import requests
class Api:
def __init__(self, base_url):
self.base_url = base_url
def get(self, endpoint, params=None, headers=None):
url = f"{self.base_url}/{endpoint}"
response = requests.get(url, params=params, headers=headers)
return response
def post(self, endpoint, data=None, headers=None):
url = f"{self.base_url}/{endpoint}"
response = requests.post(url, json=data, headers=headers)
return response
```
上面的代码定义了一个Api类,其中包含了get和post方法来发送HTTP GET和POST请求。它使用requests库来发送请求并返回响应,可以通过传递参数来设置请求的URL、查询参数、请求头和请求体等内容。
接下来,在pytest测试用例中使用这个Api类:
```python
import pytest
from api import Api
@pytest.fixture(scope="module")
def api():
return Api("https://jsonplaceholder.typicode.com")
def test_get_posts(api):
response = api.get("posts")
assert response.status_code == 200
assert len(response.json()) == 100
def test_get_post(api):
response = api.get("posts/1")
assert response.status_code == 200
assert response.json()["id"] == 1
def test_post_post(api):
data = {"title": "foo", "body": "bar", "userId": 1}
response = api.post("posts", data=data)
assert response.status_code == 201
assert response.json()["title"] == "foo"
```
上面的代码使用pytest.fixture装饰器定义了一个fixture函数,用于实例化Api类并将其作为参数传递给测试用例。然后定义了三个测试用例,分别测试了发送HTTP GET请求、发送HTTP GET请求并带参数、发送HTTP POST请求的功能。
这样,就可以使用pytest框架来封装接口自动化测试,并且可以通过传递参数来实现动态的测试用例。
阅读全文