前言
好久不见,在这里先祝大家新的一年里万事如意,事业节节高升!我已经拖了很久没有把这个系列更新完成了,主要原因还是自己写作的欲望在降低,对于我而言这是一个不好的信息。所以我必须得强迫自己把这个系列更新完成。
之前我们整体上完成了整个框架的编写,这篇我就把allure报告也加入进来,测试报告的产出在测试框架中也是很重要的一环。
allure安装配置
allure的安装这里就不在说了,之前有一篇文章是已经说过了,
pytest使用allure
配置allure信息
安装好之后,我们先打开common/request.py
文件,在里面做一下修改。
import allure
+++
def send_request(self, **kwargs: t.Dict[t.Text, t.Any]) -> Response:
response = self.dispatch(method, url, **request_data)
description_html = f"""
<font color=red>请求方法:</font>{method}<br/>
<font color=red>请求地址:</font>{url}<br/>
<font color=red>请求头:</font>{str(response.headers)}<br/>
<font color=red>请求参数:</font>{json.dumps(kwargs, ensure_ascii=False)}<br/>
<font color=red>响应状态码:</font>{str(response.status_code)}<br/>
<font color=red>响应时间:</font>{str(response.elapsed.total_seconds())}<br/>
"""
allure.dynamic.description_html(description_html)
logger.info("Request Result: {}{}".format(response, response.text))
return response
在执行请求的时候我们记录一下,该次请求的详情信息。
接着我们打开,common/result.py
,更新一下处理结果文件的代码。
import allure
+++
def get_result(r, extract):
"""获取值"""
for key in extract:
value = get_var(key, r.text)
logger.debug("正则提取结果值:{}={}".format(key, value))
cache.set(key, value)
pytest.assume(key in cache)
with allure.step("提取返回结果中的值"):
for key in extract:
allure.attach(name="提取%s" % key, body=cache.get(key))
def check_results(r, validate):
"""检查运行结果"""
expectcode = validate.get('expectcode')
resultcheck = validate.get('resultcheck')
regularcheck = validate.get('regularcheck')
if expectcode:
with allure.step("校验返回响应码"):
allure.attach(name='预期响应码', body=str(expectcode))
allure.attach(name='实际响应码', body=str(r.status_code))
pytest.assume(expectcode == r.status_code)
if resultcheck:
with allure.step("校验响应预期值"):
allure.attach(name='预期值', body=str(resultcheck))
allure.attach(name='实际值', body=r.text)
pytest.assume(resultcheck in r.text)
if regularcheck:
with allure.step("正则校验返回结果"):
allure.attach(name='预期正则', body=regularcheck)
allure.attach(name='响应值', body=str(
re.findall(regularcheck, r.text)))
pytest.assume(re.findall(regularcheck, r.text))
把上面这些工作加好之后,我们在命令行运行一下,带allure报告的cmd
pytest --html=report.html --self-contained-html --alluredir allure-results --clean-alluredir
allure generate allure-results -c -o allure-report
allure open allure-report
查看运行结果:
可以看到我们成功的把allure报告集成进来了,是不是很简单又很方便。
后记
新的一年新的展望,希望我今年能够坚持写博客!!!