python allure报告_Pytest+Allure 定制报告

python allure报告_Pytest+Allure 定制报告前言:最近在研究接口自动化的框架,好的测试报告在整个测试框架起到至关重要的部分。终于被我发现一个超好用的报告框架,不仅报告美观,而且方便CI集成。就是它,就是它:AllureTestReport!!!先上一张报告效果图:python版本及必要库python3.5pytest3.3.3pytest-allure-adaptor1.7.9一、环境配置安装Python依赖库:pip3…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言:

最近在研究接口自动化的框架,好的测试报告在整个测试框架起到至关重要的部分。终于被我发现一个超好用的报告框架,不仅报告美观,而且方便 CI 集成。

就是它,就是它:Allure Test Report!!!

先上一张报告效果图:

2442db88cf7a7d9ce632f68da75c989f.png

python 版本及必要库

python 3.5

pytest 3.3.3

pytest-allure-adaptor 1.7.9

一、环境配置

安装 Python 依赖库:

pip3 install pytest

pip3 install pytest-allure-adaptor

安装 Command Tool:

brew tap qatools/formulas

brew install allure-commandline

二、生成 html 报告命令

1、pytest 命令基础上加–alluredir,生成 xml 报告。

pytest -s -q –alluredir [xml_report_path]

//[xml_report_path]根据自己需要定义文件夹,作者定义为:/report/xml

用例执行完成之后会在 [xml_report_path] 目录下生成了一堆 xml 的 report 文件,当然这不是我们最终想要的美观报告。

45f3c4d06bd64fb39d19c27f0d2896f6.png

2、需要使用 Command Tool 来生成我们需要的美观报告。

allure generate [xml_report_path] -o [html_report_path]

//[html_report_path]根据自己需要定义文件夹,作者定义为:/report/html

打开 index.html,之前写的 case 报告就会呈现在你面前

8efdadb4a5c3763d5244fbfeaac15ece.png

注⚠️:直接用 chrome 浏览器打开报告,报告可能会是空白页面。

解决办法:

1、在 pycharm 中右击 index.html 选择打开方式 Open in Browser 就可以了。

2、使用 Firefox 直接打开 index.html。

三、定制报告

Feature: 标注主要功能模块

Story: 标注 Features 功能模块下的分支功能

Severity: 标注测试用例的重要级别

Step: 标注测试用例的重要步骤

Issue 和 TestCase: 标注 Issue、Case,可加入 URL

1、Features 定制详解 # -*- coding: utf-8 -*-

# @Time : 2018/8/17 上午10:10

# @Author : WangJuan

# @File : test_case.py

import allure

import pytest

@allure.feature(‘test_module_01’)

def test_case_01():

“””

用例描述:Test case 01

“””

assert 0

@allure.feature(‘test_module_02’)

def test_case_02():

“””

用例描述:Test case 02

“””

assert 0 == 0

if __name__ == ‘__main__’:

pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])

添加 feature,Report 展示见下图。

cb1319be4e28e9f0a16d350ac60d3d43.png

2、Story 定制详解 # -*- coding: utf-8 -*-

# @Time : 2018/8/17 上午10:10

# @Author : WangJuan

# @File : test_case.py

import allure

import pytest

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_01’)

def test_case_01():

“””

用例描述:Test case 01

“””

assert 0

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_02’)

def test_case_02():

“””

用例描述:Test case 02

“””

assert 0 == 0

if __name__ == ‘__main__’:

pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])

添加 story,Report 展示见下图。

44952f6f31c77b9356aae035ce92118d.png

3、用例标题和用例描述定制详解 # -*- coding: utf-8 -*-

# @Time : 2018/8/17 上午10:10

# @Author : WangJuan

# @File : test_case.py

import allure

import pytest

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_01’)

#test_case_01为用例title

def test_case_01():

“””

用例描述:这是用例描述,Test case 01,描述本人

“””

#注释为用例描述

assert 0

if __name__ == ‘__main__’:

pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])

添加用例标题和用例描述,Report 展示见下图。

56acb0c1040773187a253dcb7487d7dc.png

4 、Severity 定制详解

Allure 中对严重级别的定义:

1、 Blocker 级别:中断缺陷(客户端程序无响应,无法执行下一步操作)

2、 Critical 级别:临界缺陷( 功能点缺失)

3、 Normal 级别:普通缺陷(数值计算错误)

4、 Minor 级别:次要缺陷(界面错误与 UI 需求不符)

5、 Trivial 级别:轻微缺陷(必输项无提示,或者提示不规范)

# -*- coding: utf-8 -*-

# @Time : 2018/8/17 上午10:10

# @Author : WangJuan

# @File : test_case.py

import allure

import pytest

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_01’)

@allure.severity(‘blocker’)

def test_case_01():

“””

用例描述:Test case 01

“””

assert 0

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_01’)

@allure.severity(‘critical’)

def test_case_02():

“””

用例描述:Test case 02

“””

assert 0 == 0

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_02’)

@allure.severity(‘normal’)

def test_case_03():

“””

用例描述:Test case 03

“””

assert 0

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_02’)

@allure.severity(‘minor’)

def test_case_04():

“””

用例描述:Test case 04

“””

assert 0 == 0

if __name__ == ‘__main__’:

pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])

添加 Severity,Report 展示见下图。

4ee20223bef32f21c53daaa195a61b70.png

5、Step 定制详解 @allure.step(“字符串相加:{0},{1}”)#测试步骤,可通过format机制自动获取函数参数

def str_add(str1, str2):

if not isinstance(str1, str):

return “%s is not a string” % str1

if not isinstance(str2, str):

return “%s is not a string” % str2

return str1 + str2

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_01’)

@allure.severity(‘blocker’)

def test_case():

str1 = ‘hello’

str2 = ‘world’

assert str_add(str1, str2) == ‘helloworld’

if __name__ == ‘__main__’:

pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])

添加 Step,Report 展示见下图。

ebefdb78965b5f8b6e2ddda7ca559bfe.png

6、Issue 和 TestCase 定制详解 #-*- coding: utf-8 -*-

#@Time : 2018/8/17 上午10:10

#@Author : WangJuan

#@File : test_case.py

import allure

import pytest

@allure.step(“字符串相加:{0},{1}”)

#测试步骤,可通过format机制自动获取函数参数

def str_add(str1, str2):

print(‘hello’)

if not isinstance(str1, str):

return “%s is not a string” % str1

if not isinstance(str2, str):

return “%s is not a string” % str2

return str1 + str2

@allure.feature(‘test_module_01’)

@allure.story(‘test_story_01’)

@allure.severity(‘blocker’)

@allure.issue(“http://www.baidu.com”)

@allure.testcase(“http://www.testlink.com”)

def test_case():

str1 = ‘hello’

str2 = ‘world’

assert str_add(str1, str2) == ‘helloworld’

if __name__ == ‘__main__’:

pytest.main([‘-s’, ‘-q’, ‘–alluredir’, ‘./report/xml’])

添加 Issue 和 TestCase,Report 展示见下图。

120a392e2f67bdfb9f4b3e9f737e99cb.png

7、Environment 定制详解 # 具体Environment参数可自行设置

allure.environment(app_package=’com.mobile.fm’)

allure.environment(app_activity=’com.mobile.fm.activity’)

allure.environment(device_name=’aad464′)

allure.environment(platform_name=’Android’)

添加 Environment 参数,Report 展示见下图。

9b57e8f0eec68171df9d406315320305.png

8、attach 定制详解 file = open(‘../test.png’, ‘rb’).read()

allure.attach(‘test_img’, file, allure.attach_type.PNG)

在报告中增加附件:allure.attach(’arg1’,’arg2’,’arg3’):

arg1:是在报告中显示的附件名称

arg2:表示添加附件的内容

arg3:表示添加的类型 (支持:HTML,JPG,PNG,JSON,OTHER,TEXTXML)

添加 attach 参数,Report 展示见下图。

a86498d99e6b54a844a762855481e3af.png

此外,Allure 还支持 Jenkins Plugin~

感兴趣的话,请移步Jenkins 构建 Allure Report

以上,对你有帮助的话,点赞吧❤️~~

欢迎关注我的简书,博客,TesterHome,Github~~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/164434.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 如何制作一个简易的web聊天室(思路)「建议收藏」

    如何制作一个简易的web聊天室(思路)「建议收藏」在这里我先把自己的思路分享一下:聊天室的静态资源如聊天室的外观一类,使用静态的html直接编写。聊天消息则通过ajax去数据库读取并动态输出在页面上,同时设置好定时函数,让数据聊天消息在固定周期

  • 二进制和十进制的转换机制是什么?_转化成二进制

    二进制和十进制的转换机制是什么?_转化成二进制一、十进制转换成二进制1.1正整数转二进制要点:除二取余,倒序排列,高位补零。方法:将正的十进制数除以二,得到的商再除以二,依次类推直至商为0或1时为止,然后在旁边标出各步的余数,最后倒着写出来,高位补零。注:计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,高位补零。1.2负整数转二进制方法:先将对应的正整数转换成二进制后,对二进制取…

    2022年10月18日
  • HTTP协议之:报文详解

    HTTP协议之:报文详解超文本传输协议(HTTP,HyperTextTransferProtocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。HTTP协议的主要特点支持客户/服务器模式。简单快速:客户向服务器请求服务时,只需传送请求方法和路径。灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content

  • 最全java面试题及答案(208道)「建议收藏」

    最全java面试题及答案(208道)「建议收藏」本文分为十九个模块,分别是:「Java基础、容器、多线程、反射、对象拷贝、JavaWeb、异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、MyBatis、RabbitMQ、Kafka、Zookeeper、MySQL、Redis、JVM」,如下图所示:共包含208道面试题,本文的宗旨是为读者朋友们整理一份详实而又权威的面试清单,下面一起进入主题吧。Java基础1.JDK和JRE有什么区别?…

  • 俄罗斯方块(C语言实现)

    俄罗斯方块(C语言实现)文章目录游戏说明游戏效果展示游戏代码游戏代码详解游戏框架构建隐藏光标光标跳转初始化界面初始化方块信息颜色设置画出方块空格覆盖合法性判断游戏主体逻辑函数判断得分与结束主函数游戏说明俄罗斯方块相信大家都知道,这里就不再介绍什么游戏背景了,我这里对本代码实现的俄罗斯方块作一些说明:按方向键的左右键可实现方块的左右移动。按方向键的下键可实现方块的加速下落。按空格键可实现方块的顺时针旋转。按Esc键可退出游戏。按S键可暂停游戏,暂停游戏后按任意键继续游戏。按R键可重新开始游戏。除此之外,本游戏还

  • 在某个范围内随机生成一些数据_cut out删除造句

    在某个范围内随机生成一些数据_cut out删除造句根据yolov4文献中提到的cutout数据增广方式,进行扩展阅读。Cutout&RandomErasing1、Cutout论文地址:https://arxiv.org/pdf/1708.04552.pdf代码地址:https://github.com/Dingzixiang/cutout/blob/master/cutout.py出发点:文章的出发点除了解决遮挡问题外,还有从dropout上得到启发。众所周知…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号