接着上一篇分享
分享好几篇,今天来分享如何集成allure测试报告和多环境切换,分享完这篇后,这个接口自动化测试也差不多完成一些基本的功能,但是还有很多功能可以扩展,比如Email发送测试结果、根据yaml生成测试脚本、编写相关装饰器记录日志等
如何进行多环境切换?
我们的项目肯定会有多套环境,比如测试环境、UAT环境、预发布环境、线上环境等,它们的唯一不同的是域名不一样,我们定义一个base_url,后面的路径肯定会相同。我们可以自定义命令,通过运行参数传入不同的base_url实现多环境切换。
我们在conftest.py定义自定义命令
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
# pytest自定义命令hook函数
def pytest_addoption(parser):
parser.addoption(
"--baseUrl", action="store", default=None, help="输入你base_url"
)
# 定义fixture
@pytest.fixture(scope="session")
def base_url(request):
return request.config.getoption("--baseUrl")
修改测试数据
- testCase:
description: login success
name: login
method: post
uri: "/v3/api/user/phone_login"
headers:
Content-Type: application/json
payload:
phone: "13528872802"
password: "Aa12345678"
callbackType: 0
extract:
token: $.data.token
validate:
- equal_to:
$.code: 0
- equal_to:
$.data.phone: "13528872802"
- testCase:
description: profile
name: profile
method: post
uri: "/v3/api/user/profile"
headers:
Content-Type: application/json
jwt-token: ${token}
payload: {}
validate:
- equal_to:
$.code: 0
# base_url是https://api2.mubu.com
修改request_from_request_data函数
def request_from_request_data(request_data: dict, base_url: str):
"""
:param base_url: 请求域名
:param request_data: 请求数据
:return: 返回响应
"""
request_data = Utils.handle_request_data(request_data)
method = request_data['method']
headers = request_data['headers']
url = base_url + request_data['uri']
data = request_data['payload']
response = request_handler(method, url, headers, data)
if 'extract' in request_data:
Utils.extract(request_data['extract'], response)
return response
修改测试方法
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pytest
from common.request_handler import request_from_request_data
from common.yamlRead import read_yaml
from common.utils import Utils
from common.logger import logger
class Testrequests:
@pytest.mark.parametrize('test_data', read_yaml('../testData/login.yml'))
def test_requests(self, test_data, base_url):
request_data = test_data['testCase']
logger.debug(request_data)
request_data = Utils.handle_request_data(request_data)
response = request_from_request_data(request_data, base_url)
if 'validate' in request_data:
validate_list = request_data['validate']
Utils.validate(validate_list, response)
运行命令带上 --baseUrl
pytest -v -s test_requests.py --baseUrl https://api2.mubu.com
测试脚本正常执行
如何集成allure测试报告?
2.检查allure是否安装成功
allure --version 查看allure版本号
3.安装allure-pytest插件
pip install allure-pytest
4.执行测试用例指定alluredir,生成allure临时文件
pytest -v --alluredir ../temp --baseUrl https://api2.mubu.com
在工程目录下将生成temp目录,里面是临时文件
5.通过命令生成allure报告,报告将生成在allure-report目录下
allure generate ../temp -o ../allure-result --clean
6.打开allure报告
allure open ../allure-report
今天就分享到这里,更多allure用法可以到allure官网查看用法!
本文分享自 暴走的软件测试Tester 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!