Pytest+Allure初体验
转自:https://mp.weixin.qq.com/s/zF_YIPqpS_nMP4K8KTLYGw

下面简单介绍一下~
01
pytest介绍
pytest是python的第三方测试框架,是基于unittest的扩展框架。
根据pytest的官方网站介绍,它具有如下特点:
1、非常容易上手,入门简单,文档丰富
2、能够支持简单的单元测试和复杂的功能测试
3、支持参数化
4、 执行测试过程中可以将某些测试跳过,或者对某些预期失败的case标记成失败
5、支持重复执行失败的case
6、支持运行由nose, unittest编写的测试case
7、具有很多第三方插件,并且可以自定义扩展
8、方便的和持续集成工具集成
02
如何编写pytest测试用例
示例如下:

通过执行测试文件的方法(在test_py.py所在目录下执行pytest或者pytest -q(q是quiet的简拼),会寻找当前目录及其子目录下以test开头的py文件或者以test结尾的py文件。
找到文件后,在文件中找到以test开头函数并执行)。
执行上面的测试:

测试结果中可以看到,该测试共执行了两个测试样例,一个失败一个成功。
同样,我们也看到失败样例的详细信息,和执行过程中的中间结果。
通过上面的实例,我们发现编写pytest测试样例非常简单,只需要按照下面的规则:
· 测试文件以test_开头(以_test结尾也可以)
· 测试类以Test开头,并且不能带有 __init__ 方法
· 测试函数以test_开头
· 断言使用基本的assert即可
可能有些同学会问为什么要使用断言。
不管是功能测试,自动化测试,还是单元测试。一般都会预设一个正确的预期结果,而在测试执行的过程中会得到一个实际的结果。测试的成功与否就是拿实际的结果与预期的结果进行比较。这个比的过程实际就是断言(assert)。
那么接下来再简单介绍一下Allure
03
Allure介绍
Allure是一款非常轻量级并且非常灵活的开源测试报告生成框架。
Allure简单易用,易于集成。
还支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。
我们本次使用到的是基于Pytest框架集成Allure。
在pytest中使用Allure,需要使用一个Pytest的插件pytest-allure-adaptor
pytest-allure-adaptor的安装步骤如下:

然后从
https://bintray.com/qameta/generic/allure2下载allure,解压到本地后,将allure执行工具的bin目录添加到系统变量path中。
同时也应该进行jdk环境配置
(注意,jdk安装路径中不要包含括号、空号,否则执行allure命令时会报错)
在测试脚本中,怎么添加allure特性呢?
首先需要 import allure,示例如下:

从上面简单的例子当中,可看到,使用了Allure的几个特性:
a、利用Feature 和 Story 组织用例,如:一个大模块M 下包含几个小模块A、B、C ;可以将M 设置为Feature,A、B、C 设置为不同的Story ,添加Featrue和Story
b、with pytest.allure.step(‘描述’) ,在报告中增加步骤显示
c、allure.attach 用于向测试报告中输入一些附加的信息,通常是一些测试数据信息
关于Allure的更多特性,大家可在官网学习,这里就不一一介绍了。
04
Allure测试报告的生成
怎么通过上面的测试脚本,生成allure所需要的测试结果文件呢?
在cmd命令行执行测试代码:
py.test 测试用例目录 –alluredir=./allure-result
生成allure所需要的测试结果文件 。
其中 –alluredir 表示生成测试结果保存路径; ./allure-result 表示当前路径下的allure-result文件下。

然后通过命令,生成测试报告
在cmd命令执行测试代码:allure serve 测试用例目录

生成的测试报告如下:
首页

首页中展示了本次测试的测试用例数量,成功用例、失败用例、跳过用例的比例,ENVIRONMENT,SUITES,FEATURES BY STORIES等基本信息。
Behaviors
点击一下FEATURES BY STORIES,将进入Behaviors页面,这个页面按照FEATURES和 STORIES展示测试用例的执行结果:

从这个页面可以看到“日历控件功能模块”这个FEATURES包含的七个STORIES的测试用例执行情况。
Suites
点击Suites区域下面的任何一条Suite,都将进入Suites页面。
在Suites页面上点击任何一条测试用例,Suites页面的右侧将展示这条用例的详细执行情况。
从这个页面可以看到测试用例执行的具体步骤,以及每个步骤的执行结果、测试用例失败原因。

结语
将Allure与Pytest测试框架相结合,生成Allure格式的测试报告就介绍完了。