path+r'c+test.html',Pytest+Allure生成HTML图形化测试报告

一、环境配置

1、安装Python依赖库

pip install pytest

pip install pytest-allure-adaptor#pytest-allure-adaptor库可以替换为pytest-allure-adaptor2

2、安装allure-commandline工具

下载的allure-commandline为ZIP压缩包,需要将解压文件中bin目录设置为环境变量。

注意:不要将allure-commandline解压在Program Files (x86)目录中,否则运行会报错

f1730d9a1f6efcbbc436db45edc102ed.png

allure-commandline百度云盘下载:

链接:https://pan.baidu.com/s/1o2ptbdOKq2qOQYkQ0z2pKg

提取码:wevw

官网下载地址:

https://www.mvnjar.com/ru.yandex.qatools.allure/allure-commandline/1.5.3/detail.html

3、验证安装是否成功与问题解决方法

在命令行输入pytest和allure,若提示如下错误信息,是因为我们没有将python目录下的Scripts目录配置到环境变量中

0ccbd1b3f451e1f7c331ddeee8c4b1e4.png

将python目录下的Scripts目录配置到环境变量后,再次输入pytest,返回如下信息,则表示pytest安装成功。

ba95d7931de40027cab141921a06ffe6.png

但是当我们在命令行输入allure,却返回错误信息“此时不应有 Python36-32allure-commandlinein..”,产生问题的原因是我们把allure-commandline解压到“Program Files (x86)”中,需要更换安装路径为“Program Files”。

e1b391727d6f898fbbbbb563fd9ed4f7.png

当更换allure-commandline目录后,再次输入allure,可能还会返回错误信息“此时不应有javajdk1.8.0_17lib”,此时可能需要安装64位的JDK(我没试过更换目录,直接重新安装的64位JDK,所以不清楚直接更换目录是否有用)

当输入allure返回如下界面,则表示allure安装成功

bccd04b1c7ace9f524a970912871b70a.png

二、生成html报告命令

1、使用pytest生成xml报告

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

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

运行结果如下:

e5aa2b9106e1d1c8b6f1256bdcee546c.png

8332e682a5e38af84737336305f2c83e.png

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

allure generate [xml_report_path] -o [html_report_path]#[xml_report_path]为第一步生成xml报告的路径#[html_report_path]为输出html报告的路径,作者定义为:/report/html

9336b42c8c59441b2be73b13713f6f25.png

打开 index.html,测试报告就会呈现在你面前

4cda0ed09bcdaf9cf8776491f8aea19c.png

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

解决办法:

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

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

打开后界面如下

a3b58b1dfe099f9d98561d1c6947d455.png

三、定制报告

Feature: 功能块,feature功能分块时比story大,即同时存在feature和story时,feature为父节点

Story: 功能块,具有相同feature或story的用例将规整到相同模块下,执行时可用于筛选

Severity: 标注测试用例的重要级别,包含blocker, critical, normal, minor, trivial 几个不同的等级

Step: 标注测试用例步骤

Issue:问题标识,关联标识已有BUG的问题,可为一个url链接地址

TestCase: # 用例标识,关联标识用例,可为一个url链接地址

attach: 标注一些附加内容到测试报告中

Environment: 标注环境Environment字段

1、Features定制详解

Feature: 功能块,feature功能分块时比story大,即同时存在feature和story时,feature为父节点

#coding=utf-8

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}文件feature标注的第一个用例")deftest_case1():

a= 1b= 1c= a +bassert c == 2@allure.feature(f"{fileName}文件feature标注的第二个用例")deftest_case2():

a= "aaaaaaaaa"

assert len(a) == 10

d4f28e87368b1702da48b380afd1415c.png

2、Story定制详解

Story: 功能块,具有相同feature或story的用例将规整到相同模块下,执行时可用于筛选

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}文件feature标注的用例")

@allure.story(f"{fileName}文件story标注的第一个用例")deftest_case1():

a= 1b= 1c= a +bassert c == 2@allure.feature(f"{fileName}文件feature标注的用例")

@allure.story(f"{fileName}文件story标注的第二个用例")deftest_case2():

a= "aaaaaaaaa"

assert len(a) == 10

1f2b5bec7d4ad33445243af6e67b6934.png

3、用例标题和用例描述定制详解

def的方法名称为用例名称,3引号注释为用例描述

#coding=utf-8

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}")deftest_caseName1():#test_caseName1为用例title

"""用例描述:这是test_caseName1的用例描述"""

#3引号注释为用例描述

a = 1b= 1c= a +bassert c == 2@allure.feature(f"{fileName}")deftest_caseName2():

a= "aaaaaaaaa"

assert len(a) == 10

b0e9b61a2c533b2f8f2055d7ab637e6f.png

4 、Severity定制详解

Severity: 标注测试用例的重要级别,包含blocker, critical, normal, minor, trivial 几个不同的等级

Allure中对严重级别的定义:

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

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

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

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

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

#coding=utf-8

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}")

@allure.story("正向用力")

@allure.severity('blocker')deftest_case1():

a= "aaaaaaaaa"

assert len(a) == 10@allure.feature(f"{fileName}")

@allure.story("正向用力")

@allure.severity('critical')deftest_case2():

a= "aaaaaaaaa"

assert len(a) == 9@allure.feature(f"{fileName}")

@allure.story("反向用力")

@allure.severity('normal')deftest_case3():

a= "aaaaaaaaa"

assert len(a) == 10@allure.feature(f"{fileName}")

@allure.story("反向用力")

@allure.severity('minor')deftest_case4():

a= "aaaaaaaaa"

assert len(a) == 9@allure.feature(f"{fileName}")

@allure.story("反向用力")

@allure.severity('trivial')deftest_case5():

a= "aaaaaaaaa"

assert len(a) == 9

798b3c91344f6664be4ec22360602475.png

5、Step定制详解

标注测试用例步骤

#coding=utf-8

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}")

@allure.story("正向用力")

@allure.step('用例步骤')deftest_case1():"""用例描述:计算两步相加之和"""with allure.step('step1:返回a的值'):

a= 1with allure.step('step2:返回b的值'):

b= 2with allure.step('step3:预期a+b=3'):assert a + b == 4

d86f5666e0d31b31ec20839ad52a498c.png

6、Issue和TestCase定制详解

Issue:问题标识,关联标识已有BUG的问题,可为一个url链接地址

TestCase: # 用例标识,关联标识用例,可为一个url链接地址

#coding=utf-8

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}")

@allure.story("正向用力")

@allure.step('用例步骤')

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

@allure.testcase("http://www.testlink.com")deftest_case1():"""用例描述:计算两步相加之和"""with allure.step('step1:返回a的值'):

a= 1with allure.step('step2:返回b的值'):

b= 2with allure.step('step3:预期a+b=3'):assert a + b == 4

95144932e5100f0b83fbcfa590f996d8.png

7、Environment定制详解

Environment: 标注环境配置Environment字段

#coding=utf-8

importallure

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

allure.environment(test="hhhhhh")

allure.environment(域名="127.0.0.1")

ca5b6b023adc391f31ce8899249fe607.png

37d275f7a7e219a6454631b8a1e089b4.png

8、attach定制详解

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

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

arg2:表示添加附件的内容

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

#coding=utf-8

importosimportallure

fileName= os.path.split(os.path.realpath(__file__))[1]

@allure.feature(f"{fileName}")

@allure.story("正向用力")

@allure.step('用例步骤')deftest_case1():"""用例描述:计算两步相加之和"""with allure.step('step1:返回a的值'):

allure.attach('背景1', '没有背景') #attach可以打印一些附加信息

allure.attach('背景2', '没有背景')

a= 1with allure.step('step2:返回b的值'):

with open(r"C:UsersAdministratorDesktopqwe.jpg","rb") as f:

f=f.read()

allure.attach('图片',f,allure.attach_type.JPG)

b= 2with allure.step('step3:预期a+b=3'):assert a + b == 4

a3c5f57e1c60d9a956b4f61f59b58fbd.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值