Pytest是一个Python的单元测试框架,它可以帮助我们更方便地编写和运行测试用例。request是一个Python的HTTP库,它可以帮助我们发送HTTP请求和处理HTTP响应。Allure是一个测试报告框架,它可以帮助我们生成美观、易读的测试报告。本文将通过实例讲解如何使用Pytest+request+Allure实现接口自动化框架,包括安装和使用Pytest、request和Allure,以及两个示例。
安装Pytest、request和Allure
在使用Pytest、request和Allure之前,我们需要先安装它们。我们可以使用pip命令来安装它们:
pip install pytest requests allure-pytest
使用Pytest+request+Allure实现接口自动化框架
我们可以使用Pytest+request+Allure实现接口自动化框架。以下是一个示例,演示如何使用Pytest+request+Allure实现接口自动化框架:
测试用例代码
import pytest
import requests
@pytest.fixture(scope='session')
def base_url():
return 'http://example.com'
@pytest.fixture(scope='session')
def headers():
return {'Content-Type': 'application/json'}
@pytest.fixture(scope='session')
def login_token(base_url, headers):
url = base_url + '/login'
data = {'username': 'test', 'password': 'test'}
response = requests.post(url, json=data, headers=headers)
return response.json()['token']
@pytest.fixture(scope='session')
def auth_headers(headers, login_token):
headers['Authorization'] = 'Bearer ' + login_token
return headers
@pytest.mark.parametrize('user_id', [1, 2, 3])
def test_get_user_info(base_url, auth_headers, user_id):
url = base_url + '/user/' + str(user_id)
response = requests.get(url, headers=auth_headers)
assert response.status_code == 200
assert response.json()['id'] == user_id
@pytest.mark.parametrize('data', [{'name': 'John', 'age': 30}, {'name': 'Mary', 'age': 25}])
def test_create_user(base_url, auth_headers, data):
url = base_url + '/user'
response = requests.post(url, json=data, headers=auth_headers)
assert response.status_code == 200
assert response.json()['name'] == data['name']
assert response.json()['age'] == data['age']
在上面的示例中,我们定义了四个fixture函数,分别用于获取base_url、headers、login_token和auth_headers。我们使用@pytest.mark.parametrize装饰器定义了两个测试用例,分别用于测试获取用户信息和创建用户。我们使用requests库发送HTTP请求,并使用assert语句断言HTTP响应的状态码和内容。我们使用Allure的装饰器@pytest.mark.parametrize和@pytest.mark.usefixtures来生成测试报告。
运行测试用例
我们可以使用以下命令来运行测试用例:
pytest --alluredir=./report
在运行测试用例之后,我们可以使用以下命令来生成测试报告:
allure serve ./report
示例2:使用Pytest+request+Allure实现接口性能测试
我们可以使用Pytest+request+Allure实现接口性能测试。以下是一个示例,演示如何使用Pytest+request+Allure实现接口性能测试:
测试用例代码
import pytest
import requests
@pytest.fixture(scope='session')
def base_url():
return 'http://example.com'
@pytest.fixture(scope='session')
def headers():
return {'Content-Type': 'application/json'}
@pytest.fixture(scope='session')
def login_token(base_url, headers):
url = base_url + '/login'
data = {'username': 'test', 'password': 'test'}
response = requests.post(url, json=data, headers=headers)
return response.json()['token']
@pytest.fixture(scope='session')
def auth_headers(headers, login_token):
headers['Authorization'] = 'Bearer ' + login_token
return headers
@pytest.mark.parametrize('user_id', [1, 2, 3])
def test_get_user_info(base_url, auth_headers, user_id, benchmark):
url = base_url + '/user/' + str(user_id)
response = benchmark(requests.get, url, headers=auth_headers)
assert response.status_code == 200
assert response.json()['id'] == user_id
@pytest.mark.parametrize('data', [{'name': 'John', 'age': 30}, {'name': 'Mary', 'age': 25}])
def test_create_user(base_url, auth_headers, data, benchmark):
url = base_url + '/user'
response = benchmark(requests.post, url, json=data, headers=auth_headers)
assert response.status_code == 200
assert response.json()['name'] == data['name']
assert response.json()['age'] == data['age']
在上面的示例中,我们使用了pytest-benchmark插件来进行性能测试。我们使用benchmark装饰器来对requests库的get和post方法进行性能测试。我们使用assert语句断言HTTP响应的状态码和内容。
运行测试用例
我们可以使用以下命令来运行测试用例:
pytest --benchmark-autosave --alluredir=./report
在运行测试用例之后,我们可以使用以下命令来生成测试报告:
allure serve ./report
总结
本文通过实例讲解了如何使用Pytest+request+Allure实现接口自动化框架,包括安装和使用Pytest、request和Allure,以及两个示例。我们可以使用Pytest+request+Allure实现接口自动化测试和性能测试,提高程序的可靠性和性能。同时,我们也需要注意测试用例的正确性和稳定性,避免出现意外的错误和异常。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pytest+request+Allure实现接口自动化框架 - Python技术站