python自动化之如何利用allure生成测试报告(代码片段)

不是Z君 不是Z君     2022-12-13     305

关键词:

Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多
相关专题:javapythonwww.cppcns.comnbsp; (如果Homebrew版本比较旧否则安装的allure版本也很老需要先升级Homebrew
Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多种语言多种测试框架,无论是java/python还是Junit/TestNG,其他语言或者框架实现的流程和本文一致,具体配置参照各语言框架规范

安装

安装allure

Windows用户:

scoop install allure (需要先下载并安装Scoop,该方法无需配置环境变量)
MAC用户:

通过Homebrew进行自动安装
brew install allure &www.cppcns.comnbsp; (如果Homebrew版本比较旧,需要先升级Homebrew,否则安装的allure版本也很老,可能会与Python插件不兼容)
手动安装:

可以从官网 https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ 手动下载
目前最新版本为2.13.6
python自动化之如何利用allure生成测试报告

下载后解压并配置环境变量

安装allure-pytest插件

pip install allure-pytest

allure常用特性

希望在报告中看到测试功能,子功能或场景,测试步骤,包括测试附加信息可以使用@feature,@story,@step,@attach

步骤:

import allure
功能上加@allure.feature(“功能名称”)
子功能上加@allure.story(“子功能名称”)
步骤上加@allure.step(“步骤细节”)
@allure.attach(“具体文本信息”),需要附加的信息,可以是数据,文本,图片,视频,网页
如果只测试部分功能运行的时候可以加限制过滤:
pytest 文件名 --allure-features “需要运行的功能名称”

allure特性—feature/story

@allure.feature与@allure.store的关系

feature相当于一个功能,一个大的模块,将case分类到某个feature中,报告中在behaviore中显示,相当于testsuite
story相当于对应这个功能或者模块下的不同场景,分支功能,属于feature之下的结构,报告在features中显示,相当于testcase
feature与story类似于父与子关系
step特性

测试过程中每个步骤,一般放在具体逻辑方法中
可以放在关键步骤中,在报告中显示
在app,web自动化测试中,建议每切换到一个新的页面当做一个step
用法:
@allure.step() 只能以装饰器的形式放在类或方法上面
with allure.step(): 可以放在测试用例方法里面,但测试步骤的代码需要被该语句包含
运行:

在测www.cppcns.com试执行期间收集结果

pytest [测试文件] -s -q --alluredir=./result --clean-alluredir

–alluredir这个选项,用于指定存储测试结果的路径
–clean-alluredir 这个选项用来清除之前生成的结果
查看测试报告:

方法一:测试完成后查看实际报告,在线看报告,会直接打开默认浏览器展示当前报告

allure serve ./result

方法二:从结果生成报告,这是一个启动tomcat的服务,需要两个步骤

生成报告:

allure generate ./result -o ./report --clean (注意:–clean用来清除之前已生成的报告)

打开报告:

allure open -h 127.0.0.1 -p 8883 ./report (该方法直接生成一个tomcat服务,可远程访问)

举个例子:

有如下代码文件

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_allure.py
@time:2020/10/10
"""
import allure
import pytest


@allure.feature('登录模块')
class TestLogin():
    @allure.story('登录成功')
    @allure.title('登录成功标题')
    def test_login_sucess(self):
        with allure.step('步骤1:打开应用'):
            print('应用已打开')
        with allure.step('步骤2:进入登录页面'):
            print('登录页面已打开')
        with allure.step('步骤3:输入用户名和密码'):
            print('用户名和密码输入成功')
        print('登录测试用例:登录成功')

    @allure.story('登录成功')
    def test_login_sucess2(self):
        assert '1' == 1
        print('登录测试用例:登录成功')

    @allure.story('登录失败')
    def test_login_failure_a(self):
        print('登录测试用例:登录失败,用户名缺失')

    @allure.story('登录失败')
    def test_login_failure_b(self):
        print('登录测试用例:登录失败,密码缺失')

    @allure.story('登录失败')
    def test_login_failure_c(self):
        with allure.step('输入用户名'):
            print('已输入用户名')
        with allure.step('输入密码'):
            print('已输入密码')
        with allure.step('点击登录'):
            print('已点击登录')
        print('登录测试用例:登录失败,密码错误')


@allure.feature('搜索模块')
class TestSearch():
    def test_search1(self):
        print('搜索用例1')

    TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'
    @allure.testcase(TEST_CASE_LINK,'测试用例连接')
    def test_search2(self):
        print('搜索用例2')
    @allure.step('搜索步骤')
    def test_search3(self):
        print('搜索用例3')

依次执行命令:

pytest test_allure.py --alluredir=./result --clean-alluredir

allure serve ./result

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_allure.py --alluredir=./result --clean-alluredir
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini
plugins: allure-pytest-2.8.18
collected 8 items                                                                                                                                                             

test_allure.py .F......                                                                                                                                                 [100%]

================================================================================== FAILURES ===================================================================================
________________________________________________________________________ TestLogin.test_login_sucess2 _________________________________________________________________________

self = <test_allure.TestLogin object at 0x7fef3d5cba90>

    @allure.story('登录成功')
    def test_login_sucess2(self):
>       assert '1' == 1
E       AssertionError: assert '1' == 1

test_allure.py:27: AssertionError
=========================================================================== short test summary info ===========================================================================
FAILED test_allure.py::TestLogin::test_login_sucess2 - AssertionError: assert '1' == 1
========================================================================= 1 failed, 7 passed in 0.07s =========================================================================
chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result 
Generating report to temp directory...
Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/7024790777193223986/allure-report
Starting web server...
2020-10-13 21:39:56.174:INFO::main: Logging initialized @6818ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.12.100:58977/>. Press <Ctrl+C> to exit

生成的报告:

python自动化之如何利用allure生成测试报告

allure特性-testcase

关联测试用例(可以直接给测试用例的地址链接)

例子:

TEST_CASE_LINK = 'https://mirrors.huaweicloud.com/'
@allure.testcase(TEST_CASE_LINK,'测试用例连接')
def test_search(self):
    print('搜索用例')

python自动化之如何利用allure生成测试报告

按重要性级别进行一定范围测试

通常测试有P0、冒烟测试、验证上线测试。按重要性级别来执行的,比如上线要把主流程和重要模块都跑一遍,可通过以下方法解决

通过附加@pytest.mark标记

通过allure.feature,allure.story

也可以通过allure.severity来附加标记

级别:
trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
minor 不太重要,次要缺陷(界面错误与UI需求不符)
normal:正常问题,普通缺陷(数值计算错误)
critical:严重,临界缺陷(功能点缺失)
blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)
使用方法:

在方法、函数和类上面加 @allure.severity(allure.severity_level.TRIVIAL)

执行:

pytest -s -v 文件名 --allure-severities normal,critical

举例说明:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_severity.py
@time:2020/10/11
"""
import allure
import pytest


# 不加任何标记,默认normal
def test_with_no_severity():
    pass


# trivial:不重要,轻微缺陷(必输项无提示,或者提示不规范)
@allure.severity(allure.severity_level.TRIVIAL)
def test_with_trivial_severity():
    pass


# minor 级别 不太重要,次要缺陷(界面错误与UI需求不符)
@allure.severity(allure.severity_level.MINOR)
def test_with_minor_severity():
    pass


# normal:正常问题,普通缺陷(数值计算错误)
@allure.severity(allure.severity_level.NORMAL)
def test_with_normal_severity():
    pass


# critical:严重,临界缺陷(功能点缺失)
@allure.severity(allure.severity_level.CRITICAL)
def test_with_ritical_severity():
    pass


# blocker:阻塞,中断缺陷(客户端程序无响应,无法执行下一步操作)
@allure.severity(allure.severity_level.BLOCKER)
def test_with_blocker_severity():
    pass


@allure.severity(allure.severity_level.NORMAL)
class TestClassWithNormalSeverity(object):

    # 不加任何标记,默认为同class级别
    def test_inside_with_normal_severity(self):
        pass

    # 重新设置了critical级别
    @allure.severity(allure.severity_level.CRITICAL)
    def test_inside_with_critical_severity(self):
        pass

执行:

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_severity.py --alluredir=./result --clean-alluredir -vs
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.9
cachedir: .pytest_cache
rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini
plugins: allure-pytest-2.8.18
collected 8 items                                                                                                                                                             

test_severity.py::test_with_no_severity PASSED
test_severity.py::test_with_trivial_severity PASSED
test_severity.py::test_with_minor_severity PASSED
test_severity.py::test_with_normhttp://www.cppcns.comal_severity PASSED
test_severity.py::test_with_ritical_severity PASSED
test_severity.py::test_with_blocker_severity PASSED
test_severity.py::TestClassWithNormalSeverity::test_inside_with_normal_severity PASSED
test_severity.py::TestClassWithNormalSeverity::test_inside_with_critical_severity PASSED

============================================================================== 8 passed in 0.03s ========================================================================www.cppcns.com======
chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result 
Generating report to temp directory...
Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/17788207943997663035/allure-report
Starting web server...
2020-10-13 22:27:49.842:INFO::main: Logging initialized @6620ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.12.100:59696/>. Press <Ctrl+C> to exit
python自动化之如何利用allure生成测试报告

终极用例:
百度搜索:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
"""
@author:chenshifeng
@file:test_baidudemo.py
@time:2020/10/13
"""
import pytest
import allure
from selenium import webdriver
import time

@allure.testcase('https://www.github.com')
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data1',['allure','pytest','unittest'])
def test_steps_demo(test_data1):
    with allure.step('打开百度网页'):
        driver=webdriver.Chrome()
        driver.get('http://www.baidu.com')
        driver.maximize_window()
    with allure.step(f'输入搜索词:test_data1'):
        driver.find_element_by_id('kw').send_keys(test_data1)
        time.sl编程客栈eep(2)
        driver.find_element_by_id('su').click()
        time.sleep(2)
    with allure.step('保存图片'):
        driver.save_screenshot('./screenshot/baidu.png')
        allure.attach.file('./screenshot/baidu.png',attachment_type=allure.attachment_type.PNG)
    with allure.step('关闭浏览器'):
        driver.quit()

执行:

chenshifengdeMacBook-Pro:testcode chenshifeng$ pytest test_baidudemo.py --alluredir=./result --clean-alluredir -vs
============================================================================= test session starts =============================================================================
platform darwin -- Python 3.9.0, pytest-6.1.1, py-1.9.0, pluggy-0.13.1 -- /usr/local/bin/python3.9
cachedir: .pytest_cache
rootdir: /Users/chenshifeng/MyCode/PythonCode/SFDSZL/test_pytest, configfile: pytest.ini
plugins: allure-pytest-2.8.18
collected 3 items                                                                                                                                                             

test_baidudemo.py::test_steps_demo[allure] PASSED
test_baidudemo.py::test_steps_demo[pytest] PASSED
test_baidudemo.py::test_steps_demo[unittest] PASSED

============================================================================= 3 passed in 24.65s ==============================================================================
chenshifengdeMacBook-Pro:testcode chenshifeng$ allure serve ./result 
Generating report to temp directory...
Report successfully generated to /var/folders/p0/3_7fwrvx6n3ftpfd4wjb01300000gn/T/18005664130273264423/allure-report
Starting web server...
2020-10-13 23:03:39.221:INFO::main: Logging initialized @7360ms to org.eclipse.jetty.util.log.StdErrLog
Server started at <http://192.168.12.100:60775/>. Press <Ctrl+C> to exit

共勉:【可能给予你助力的教程】

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

关注我的微信公众号【程序媛木子】免费获取~

不登高山,不知天之高也,等待只会错失,奋斗才能成功。

我的学习群:644956177 群里有技术大牛一起交流分享~

如何利用jenkins插件查看allure报告-----完整篇

...u/p/11209160.html 背景:python3+appium+pytest+allure写了安卓的自动化脚本,在windows本机pycharm上跑通过后生成了allure报告。 公司jenkins搭建在linux服务器上。痛点:1.allure报告需要一堆css/js静态数据文件,才能展示数据,给领导汇... 查看详情

pytest+allure生成自动化测试报告

一、allure生成自动化测试报告1.安装pipinstallallure-pytest,allure-pytest插件,用来生成Allure测试报告所需要的数据,在pytest.ini文件中配置生成数据文件路径   addopts=-s--alluredir=./report/html2.下载allure:https://github.com/allure-fram 查看详情

allure--自动化测试报告生成(代码片段)

之前尝试使用过testNG自带的测试报告、优化过reportNG的测试报告,对这两个报告都不能满意。后经查找资料,发现有个神器:Allure(已经有allure2了,笔者使用的就是allure2),生成的测试报告与上述两种对比,简直完美!先上个... 查看详情

allure--自动化测试报告生成

参考:https://www.cnblogs.com/clairejing/p/9755201.htmlhttps://www.cnblogs.com/houzheng/p/11071133.html#_label6官网https://docs.qameta.io/allure/#_testng https://github.com/allure-framework/allure1/ 查看详情

allure--自动化测试报告生成

参考:https://www.cnblogs.com/clairejing/p/9755201.htmlhttps://www.cnblogs.com/houzheng/p/11071133.html#_label6官网https://docs.qameta.io/allure/#_testng https://github.com/allure-framework/allure1/wiki/TestNG 查看详情

python生成allure测试报告,allure使用详细说明(代码片段)

...#xff0c;这俩百度下命令,执行命令就可以了。但是我们自动化最后不能手动再执行个命令生成报告吧,那多不方便&# 查看详情

rf+allure生成漂亮的测试报告之环境搭建及简单使用

参考技术ARobotFramework学习笔记目录 查看详情

超详细从入门到精通,pytest自动化测试框架实战教程-allure测试报告(代码片段)

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜&#... 查看详情

allure+testng(一):手把手教你用allure生成优美的测试报告

...件夹路径。下一章再给大家介绍怎么更规范的去编写你的自动化case使报告更美观,符合你的要求。 查看详情

python+allure生成测试报告

首先我们需要在python环境上安装pytest库,这里建议通过pip安装:pipinstallpytest 然后编写一个简单的pytest测试用例,这里我们需要满足以下条件测试文件以test_开头(以_test结尾也可以)测试类以Test开头,并且不能带有init方法... 查看详情

接口自动化ci持续集成之jenkins(docker安装jenkins+python+pytest+allure)(代码片段)

...0c;也就意味着每天可能会发生多次集成。每次集成都通过自动化构建(包括编译、发布、自动化测试)来验证,从而尽快的发现集成错误。许多团队发现这个过程可以大大减少集成问题,让团队能够更快的开发内... 查看详情

python+selenium自动化,allure包不生成index.html文件,解决方法

参考技术A查看ui自动化生成的html报告。pytest+allure只生成了xml报告--json格式的数据,没有生成html的index报告。场景:排查:1.cmd输入allure--version,查看是安装成功2.pycharm输入pipfreeze,查看包是否配置成功都显示安装、配置成功3.pyc... 查看详情

使用nginx+allure管理自动化测试报告

参考技术Aallure在自动化测试中经常用来生成漂亮的报告,但是网上及官网上给出的例子都仅仅是针对单个测试用例文件的形式介绍的,实际使用中,自动化测试往往需要包含不止一个产品或项目,本文介绍如何使用nginx+allure来... 查看详情

pytest集成allure生成测试报告(代码片段)

Pytest集成Allure生成测试报告1、Allure安装1)Allure报告的demo样式(是不是很漂亮呢)2)Allure下载选择需要的版本,下载zip文件,解压即可2、添加allure环境变量path:D:ProgramFilesallure-2.13.1in3、查看生成的allure报告cmd:allureserveallure生... 查看详情

allure自动化测试报告我是这样用的(代码片段)

关于自动化测试报告:之前用过testNG自带的测试报告、优化过reportNG的测试报告、extentreport、Zreport(大飞总原创),这些是我之前都用过的,也是在去年雯姐和我说过Allure2这个报告不错,一直没时间,正巧最近有用到,接触下发现... 查看详情

用pytest+allure生成漂亮的html图形化测试报告

本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范、格式统一、美观的测试报告。 通过这篇文章的介绍,你将能够: -将Allure与Pytest测试框架相结合; -执行测试之后,生成Allure格式的测试报告。1、Allure... 查看详情

macjenkins生成allure报告报错error:step‘allurereport’abortedduetoexception:

参考技术Ajenkins生成allure时报错 ERROR:Step‘AllureReport’abortedduetoexception时,百度了很久没有找到原因,仔细查看构建时控制台输出的日之时,看到了报错的地方,jerkins自动安装AllureCommandline时安装失败了找到问题就很好解决了... 查看详情

jenkins集成allure测试报告

...,选择2.13.9版本   三、新建一个job,用于启动python项目1、输入job名称,选择自由风格项目 &n 查看详情