allure测试报告

这次allure报告基于pytest测试框架写的,共分为4部,首先安装java的jdk,再安装allure,生成报告,最后再定制报告。

1、安装java的jdk

因为allure需要java的环境,所以要首先安装java环境

1.1 下载JDK

 下载java安装包,至少要1.8.0以上版本,也就是jdk-8u321-windows-x64.exe

Java Downloads | Oracle

1.2 安装JDK

首先需要安装Java的JDK, 以jdk-8u321-windows-x64.exe为例。

双击安装包安装,点击下一步

点击下一步

点击下一步,安装jre

展示已经安装成功了。点击关闭。现在我们的jdk装好了。

下面开始配置环境变量

win10 系统 点击计算机--右键--属性--高级系统设置--环境变量--系统变量,

win 11 系统,打开控制面板,搜索查看高级系统设置

点击高级-->环境变量

选择系统变量下的新建,新建一个JAVA_HOME的系统变量,变量值为Java的JDK所在路径。

C:\Program Files\Java\jdk1.8.0_321

选择“系统变量”下面的”新建“选项,变量名为“CLASSPATH,变量值.;%Java_Home%\bin;%Java_Home%\lib\dt.jar;%Java_Home%\lib\tools.jar

在环境变量中找到变量path,双击打开
在变量值最前面添加%Java_Home%\bin;%Java_Home%\jre\bin;

把后面有一个变量值C:\Windows\system32放到开头,因为%不能放在开头,否则会导致展开不了的问题。

环境变量Path点击编辑不展开解决办法_环境变量编辑页面展开不了-CSDN博客

环境变量配置完成后,点击确定选项

检查Java环境是否配置成功

按快捷键Win+R,输入cmd

输入java

输入javac

输入java -version,每次检查,都必须重新打开dos窗口

这样java的环境已经配置好了。

2、安装allure

2.1 下载allure命令行工具

下载地址,以2.17.3为例,先下载

Central Repository: io/qameta/allure/allure-commandlineicon-default.png?t=N7T8https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/

点进去后,下载

allure-commandline-2.17.3.zip

2.2  安装

再C盘新建DDD文件夹,将下载的报告解压进去,

下面就是allure环境变量的路径 ,C:\DDD\allure-2.17.3\bin

配置环境变量

开始菜单搜索:高级系统设置-->切换到 高级选项卡--->点击环境变量按钮

选择Path双击,

选择新建环境变量,将刚才的环境变量复制进去

点击确定,确定,确定

检查,cmd 弹出小黑窗,allure--version

检查是否能显示出来allure的版本

3、生成报告

3.1 下载代码库

在这里,我们要在PyCharm里面下载allure-pytest、allure-python-commons两个代码库。

allure-pytest的作用是,运行pytest时,生成符合allure标准的测试结果数据。提供测试报告的数据。

在PyCharm中点击File--Settings

点击加号

可以选择特定版本,比如2.9.45,点击Install Package

另一个包安装与此类似,

3.2 编辑pytest.ini文件

编辑pytest.ini文件,加上addopts=-vs --alluredir ./result

加上这一句的意思是,将在result下生成测试结果中间数据,方便下一步测试报告的分析。

3.3  执行命令

在Terminal中执行命令"pytest"

可以看到result下面会生成很多的结果文件

把命令复制过来运行,分析测试结果,生成测试报告“allure generate ./result -o ./report --clean”

此时可以在report下面查看测试报告了

选择index.html右键Open In-->Browser-->Chrome

打开后是这样的

有六条执行失败了,可以看

点进去就会报详细信息

失败1:说找不到这个元素

元素未定位到,可能被删掉了

可能没有加时间等待。后面修改一下。

失败2:

# csrftoken 和sessionid 的值是动态变化的,时间长了也会过期,

即使设置了cookie的有效期,csrftoken和sessionid的值也是动态变化的,时间长了也会过期,所以通过cookie绕过登录的方法,只能保证短时间内执行大量的测试用例。

3.4 注意

其中还有注意的几点。

1.读取excel方法中,应该把excel路径改成绝对路径

D:\python\autoFuncTest2\utils\excel_utils.py

import os

from openpyxl import load_workbook
from datetime import datetime,date

def read(file_name):

    sheet_name = file_name.split('\\')[-1].split('.')[0]
    base_path = os.path.dirname(__file__)
    # print(base_path)   # 'D:\\python\\autoFuncTest2\\utils'
    # 当前excel文件的绝对路径是'D:\\python\\autoFuncTest2\\resource\\test_data.xlsx'
    path = base_path.replace('utils','resource\\test_data.xlsx')
    # print(path)  # D:\python\autoFuncTest2\resource\test_data.xlsx
    excel = load_workbook(path)
    sheet = excel[sheet_name]
    table = []
    date_column = 0
    verify_date_column = 0
    for row in sheet:
        line = []
        for cell in row:
            if cell.row == 1 and cell.value == 'date':
                date_column = cell.column
            if cell.row == 1 and cell.value == 'verify_date':
                verify_date_column = cell.column
            if cell.row != 1 and cell.column == date_column:
                # 2000/06/04 20:49
                # 2000/6/4 20:49:00
                cell.value = cell.value.strftime('%Y/%m/%d %H:%M')
            if cell.row != 1 and cell.column == verify_date_column:
                # Jun 4, 2024
                # cell.value = cell.value.strptime(cell.value,'%Y/%m/%d %H:%M')
                # cell.value = cell.value.strftime('%b %d, %Y') 'Jun 04, 2024'
                # 如何去掉前导的0,
                cell.value = cell.value.strftime('%b') + ' ' + str(int(cell.value.strftime('%d')))\
                             + ', ' + cell.value.strftime('%Y')
            line.append(cell.value)
        table.append(line)

    # print(table[1:])
    return table[1:]

# 'if __name__ == '__main__':' 的作用,其他文件导入这个文件时,这段代码不会自动执行
# 否则,如果没有’if __name__ == '__main__':‘,要么在当前文件的方法不能被执行,
# 要么其他文件import当前文件时,下面的代码就会自动执行。
if __name__ == '__main__':
    table1 = read(r'D:\python\autoFuncTest2\test_cases\test_login5.py')
    print(table1)
    base_path1 = os.path.dirname(__file__)
    # print(base_path1)   # 'D:\\ython\\autoFuncTest2\\utils'
    # 当前excel文件的绝对路径是'D:\\python\\autoFuncTest2\\resource\\test_data.xlsx'
    path1 = base_path1.replace('utils','resource\\test_data.xlsx')
    # print(path1)  # D:\python\autoFuncTest2\resource\test_data.xlsx

通过下面的这几句代码,把相对路径改成绝对路径

    base_path = os.path.dirname(__file__)
    # print(base_path)   # 'D:\\ython\\autoFuncTest2\\utils'
    # 当前excel文件的绝对路径是'D:\\python\\autoFuncTest2\\resource\\test_data.xlsx'
    path = base_path.replace('utils','resource\\test_data.xlsx')
    # print(path)  # D:\python\autoFuncTest2\resource\test_data.xlsx
    excel = load_workbook(path)

2、页面非中文不好理解,点击左下角Zh,选择中文

3、conftest.py文件的方法改成@pytest.fixture(scope='function'),每一条测试用例重新打开浏览器,避免互相影响

4、conftest.py文件的time.sleep(10)注释掉,否则运行的太慢,调试时可以加上便于观察

4、定制报告

一般写模块名、功能名、中文名就够了。

以登录login模块为例。

首先修改配置文件Pytest.ini

-k "login"模糊匹配login,使测试只找到带login的用例进行运行。

下面以test_login1.py为例介绍,

@allure.feature('登录模块')     说明多个测试用例在登录模块这个测试模块里面,便于观察结果

@allure.story('正常登录')       说明有这个用例的功能使正常登录,其他用例还有异常的登录等。

@allure.title('正常登录功能测试')           用例的头名字

@allure.description('用例描述')      这是对用例的描述

@allure.issue('bug链接','bug编号')   这个是附上以前的bug的信息的

@allure.severity("严重级别")            这个是说明用例的严重级别的

allure.attach.file(source="图片路径",name="图片名称")   这个是保留截图文件的。

下面是测试报告

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值