pytest+allure生成漂亮的可视化测试报告
前言:
最近在折腾web自动化,使用的是Python+selenium,使用pytest框架自带的报告不太美观,偶然间了解到Allure是免费开源的报告框架,之前在使用龙测自动化时有接触过这个框架,很是方便和美观,于是自己做了个demo,供参考。
Allure介绍:
Allure框架是一种灵活的轻量级多语言测试报告工具,它不仅能够以简洁的web报告形式显示已测试的内容,而且允许参与开发过程的每个人从测试的日常执行中提取最大限度的有用信息。支持使用的语言有:
- Java
- Python
- JavaScript
- Ruby
- Groovy
- PHP
- .Net
- Scala
环境说明:
win7系统
jdk 1.8
Python 3.7.7
pytest-5.4.3
plugins: allure-pytest-2.8.16
allure-commandline 2.11.0
安装步骤:
1.这里需要Python环境,自行安装Python库,配置好环境变量即可(因为我已经安装好了jdk 1.8,故此处省略,没有安装的小伙伴先要安装和配置好jdk)
2.Allure依赖于Pytest框架,则需要先安装Pytest和相关包(本次测试用的是win7系统):
打开cmd,分别输入pip install pytest,pip install allure-pytest,安装成功即可
注:网上很多资料说要安装pytest-allure-adaptor,但是这个是allure 1用的,现在已经很少用了而且官方已不维护,我们用的是Allure 2,不需要安装这个插件
3.下载allure-commandline,可以到git上下载(版本可以选择新一点的,目前最新的版本是2020年4月的2.13.3版本)
下载地址:https://github.com/allure-framework/allure2/releases
下载完成后解压,得到bin目录
将bin目录配置到系统变量path中
配置好后,在cmd窗口中输入:allure --version,显示如下则表示安装成功
接下来可以开始进行编码了,这里用的是Pycharm:
代码截图如下:
原代码如下:
import pytest
import allure
import os
@pytest.fixture(scope='function')
def login():
print("登录")
yield
print("登录完成")
@allure.feature('加入购物车')
def test_1(login):
'''将苹果加入购物车'''
print("测试用例1")
@allure.feature('加入购物车')
def test_2():
'''将橘子加入购物车'''
print("测试用例2")
if __name__ == "__main__":
# 执行pytest单元测试,生成 Allure 报告需要的数据存在 /temp 目录
pytest.main(['--alluredir', './temp'])
# 执行命令 allure generate ./temp -o ./report --clean ,生成测试报告
os.system('allure generate ./temp -o ./report --clean')
点击右键,选择run allure_test,如下图
用浏览器打开report目录下的index.html文件
浏览器打开后如下图:
如果界面显示全英文,可以设置成中文显示,如下图:
终端命令执行方法:
1.将如下代码注释掉(选中后按Ctrl+/)
2.点击Pycharm左下角的Terminal,即进入终端命令窗口输入:py.test -s -v allure_test.py --alluredir report
执行结果如下:
3.上面第2步已经生成了可供allure解析的文件,下面只需要解析成allure图形显示即可,在终端输入: allure generate report/ -o report/html (html是report路径下生成一个html文件夹,将解析结果放入html文件夹中)
执行成功,终端显示如下图:
4.打开html文件夹,右键index.html文件,选择Open in Browser和浏览器,就可以显示出对应的结果了
遇到的问题:
1.执行py文件时,报错提示:AttributeError: module 'allure' has no attribute 'feature'
原因:
解决办法: