分享

pytest + allure2.x 生成美观的测试报告

 看见就非常 2020-05-13

代码环境

python: 3.6.8
pytest: 4.6.3
allure: 2.12.1
allure-pytest: 2.6.5

背景

最近有使用pytest写接口测试,pytest本身所输出的测试报告比较丑。
在网上搜了一下,基本上大家都是使用allure配合pytest生成美观的测试报告。
方法本身没问题,但是在初始的安装和demo步骤上还是基于以前allure 1.x的版本,没有进行更新。
所以本篇博文更新了针对allure 2.x版本安装和demo运行步骤。

安装

1. 安装pytest

pytestpython的一个第三方单元测试框架,在这里用于生成原始的执行结果。
命令行或者终端中输入 pip install pytest 即可进行安装。

2. 安装allure-pytest

allure-pytestpython的一个第三方库。用于连接pytestallure,使它们可以配合在一起使用。
allure-pytest基于pytest的原始执行结果生成适用于allure的json格式结果。该json格式结果可以用于后续适用allure生成html结果。
命令行或者终端中输入 pip install allure-pytest 即可进行安装。

许多博客中是安装pytest-allure-adaptor。这个第三方库已经过时了,无法和现有的pytest搭配使用。

3. 安装allure

安装allure的方法具体可以参照 allure官方安装说明
我的电脑安装的系统是Ubuntu 18.04,但很遗憾按照官方的说明使用apt方式没有安装成功。
大家如果也出现这种情况的话,可以使用 allure官方安装说明 页面中2.1.4的方法下载 allure 后,手动进行安装。
手动安装allure

Demo

1. 基于pytest写个测试文件

# coding:utf-8


def func(x):
	return x + 3


def test_func_0():
	src = 0
	expect = 3
	assert func(src) == expect


def test_func_1():
	src = 0.1
	expect = 3.1
	assert func(src) == expect


def test_func_2():
	src = -1
	expect = 0
	assert func(src) == expect

2. 运行pytestallure生成报告

a. 打开终端terminal,切到测试文件所在目录。假设文件名为test_demo.py
b. 生成json格式运行结果
运行命令 pytest --alluredir=report test_demo.py
命令中的 --alluredir=report 指明了生成的json结果文件存放的目录为当前目录下的report文件夹
命令的运行结果如下图所示:
pytest执行结果
基于pytest捕捉到的测试用例,每个用例的执行结果会生成一个json文件。如下图所示:
json结果文件
c. 使用allure生成最终的测试报告
运行命令 allure generate report
这个命令会将 report 文件夹下的json文件渲染成网页结果,方便观看。生成的网页结果默认保存在当前文件夹下的 allure-report 文件夹内。

3. 打开生成的网页报告

allure-report 文件夹的结构如下:
allure-report文件夹结构
这里的 index.html 就是最终的结果页面。但直接通过浏览器打开这个文件是看不到实际内容的,这是因为实际内容需要 allure 进行渲染后才能看到。直接打开index.html,浏览器窗口如下图所示:
错误打开方式
想要看到实际内容,需要使用allure内置的命令。allure使用了两种方式来渲染页面。分别是allure openallure serve。前者用于在本地渲染和查看结果,后者用于在本地渲染后对外展示结果。这里我们使用allure open。运行命令 allure open allure-report即可自动打开浏览器展示渲染好的结果。这里的allure-reportallure generate生成的结果所在目录。
渲染好的页面如下图所示:
正确打开方式

Done

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多