Pytest 测试框架与Allure 测试报告——Allure2测试报告-L1

目录:

  1. allure2安装
    1. Allure2介绍
    2. Allure2报告展示
    3. Allure2报告展示-首页概览
    4. Allure2报告展示-用例详情页
    5. Allure2安装
    6. Allure2下载与安装
    7. Allure环境验证
    8. 插件安装-Python
    9. 插件安装-Java
    10. 验证插件安装-Java
  2. allure2运行方式
    1. 生成测试报告流程
    2. 使用Allure2运行方式-Python
    3. 使用Allure2运行方式-Java
    4. 问题
    5. 代码示例:

1.allure2安装

Allure2 介绍
  • Allure 是由 Java 语⾔开发的⼀个轻量级,灵活的测试报告⼯具。
  • Allure 多平台的 Report 框架。
  • Allure ⽀持多语⾔,包括 python、JaveScript、PHP、Ruby 等。
  • 可以为开发/测试/管理等人员提供详尽的的测试报告,包括测试类别、测试步骤、日志、图片、视频等。
  • 可以为管理层提供高水准的统计报告。
  • 可以集成到 Jenkins 生成在线的趋势汇总报告。
Allure2 报告展示

github 地址:https://github.com/allure-framework/allure2

Allure2 报告展示 - 首页概览

Allure2 报告展示 - 用例详情页 

Allure2 安装
  1. 安装 Java,需要配置环境变量。
  2. 安装 Allure ,需要配置环境变量。
  3. 安装插件
    • Python:pip install allure-pytest
    • Java:Maven插件安装。
Allure2 下载与安装
  1. 先下载 Allure 源码包到本地。
    • 下载地址 1
    • 下载地址 2
      • mac/linux: 下载 tar
      • windows: 下载 zip
  2. 配置环境变量:解压后将 bin 目录加入 PATH 环境变量。
Allure 环境验证
  • 执行命令验证环境

# 环境验证
allure --version
插件安装-Python
  • 安装 Python 插件 allure-pytest
    • 执行命令:pip install allure
# linux/mac
> pip list |grep allure
allure-pytest         x.xx.x

# windows
> pip list |findstr allure
allure-pytest         x.xx.x
 插件安装-Java
  • <groupId>指定了插件的groupId。
  • <artifactId>指定了插件的artifactId。
  • <version>指定了插件的版本号。

    <properties>
        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
        <maven.compiler.version>3.10.1</maven.compiler.version>
        <maven-surefire-plugin.version>3.0.0-M9</maven-surefire-plugin.version>
        <!-- 使用 Java 17 语言特性 ( -source 11 )  -->
        <java.version>17</java.version>
        <!-- 对应junit Jupiter的版本号;放在这里就不需要在每个依赖里面写版本号,导致对应版本号会冲突 -->
        <junit.jupiter.version>5.9.2</junit.jupiter.version>
        <!-- log日志 -->
        <slf4j.version>2.0.6</slf4j.version>
        <logback.version>1.4.5</logback.version>
        <!-- yaml对应解析 -->
        <jackson.version>2.14.2</jackson.version>
        <!-- hamcrest断言 -->
        <hamcrest.version>2.2</hamcrest.version>
        <!-- allure报告 -->
        <allure.version>2.21.0</allure.version>
        <allure.maven.version>2.12.0</allure.maven.version>
        <aspectj.version>1.9.19</aspectj.version>
        <allure.cmd.download.url>
            https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline
        </allure.cmd.download.url>
    </properties>
    <!--    物料清单 (BOM)-->
    <dependencyManagement>
        <dependencies>
            <!--当使用 Gradle 或 Maven 引用多个 JUnit 工件时,此物料清单 POM 可用于简化依赖项管理。不再需要在添加依赖时设置版本-->
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>${junit.jupiter.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- junit5 -->
        <!-- 创建 Junit5 测试用例的 API-->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <!--对应添加的依赖的作用范围-->
            <scope>test</scope>
        </dependency>
        <!-- 兼容 JUnit4 版本的测试用例-->
        <dependency>
            <groupId>org.junit.vintage</groupId>
            <artifactId>junit-vintage-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <!--suite套件依赖 -->
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- log日志 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>compile</scope>
        </dependency>

        <!--        allure报告-->
        <dependency>
            <groupId>io.qameta.allure</groupId>
            <artifactId>allure-junit5</artifactId>
            <version>${allure.version}</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj.version}</version>
        </dependency>

        <!--        yaml文件解析-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
            <version>${jackson.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <!-- 设置编码为 UTF-8 -->
                    <encoding>${maven.compiler.encoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven-surefire-plugin.version}</version>
                <configuration>
                     <argLine>
                       -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"
                     </argLine>
                    <includes>
                        <!--  <include>**/*Test</include>-->
                        <!--  <include>**/Test*</include>-->
                    </includes>
                    <systemProperties>
                        <property>
                            <name>allure.results.directory</name>
                            <value>${project.build.directory}/allure-results</value>
                        </property>
                    </systemProperties>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>org.junit.jupiter</groupId>
                        <artifactId>junit-jupiter-engine</artifactId>
                        <version>${junit.jupiter.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                        <version>${junit.jupiter.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>io.qameta.allure</groupId>
                <artifactId>allure-maven</artifactId>
                <version>${allure.maven.version}</version>
                <configuration>
                    <reportVersion>${allure.version}</reportVersion>
                    <allureDownloadUrl>${allure.cmd.download.url}/${allure.version}/allure-commandline-${allure.version}.zip</allureDownloadUrl>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
验证插件安装-Java
mvn clean test
mvn allure:report

# allure报告打开网站
mvn allure:serve

2.allure2运行方式

生成测试报告流程

使用 Allure2 运行方式-Python 
  • 使用 --alluredir 参数生成测试报告。
# 在测试执行期间收集结果
pytest [测试用例/模块/包] --alluredir=./result/  (—alluredir这个选项 用于指定存储测试结果的路径)

# 生成在线的测试报告
allure serve ./result
使用 Allure2 运行方式-Java
  • 使用 allure:report 参数生成测试报告。
# 在测试执行期间收集结果
# mvn命令行使用 maven插件安装
mvn clean test allure:report

# 生成在线的测试报告
# mvn 直接找target/allure-results目录
mvn allure:serve 
问题
  • 运行mvn命令对应没有在target下面生成allure-results目录,怎么解决?

  • 解决方案:

    • 在src/test/resources路径下配置allure配置文件allure.properties,指名allure报告生成路径。
    allure.results.directory=target/allure-resultsa
  •  运行mvn命令一直卡在下载中,如下图:

 

  • 解决方案:
    • 在项目下创建.allure文件夹。
    • 下载allure解压到.allure文件夹下。

 

代码示例:

test_order.py

def test_one():
    assert True
 
 
def test_two():
    assert True
 
 
def test_three():
    assert True
 
 
def test_one1():
    assert True
 
 
def test_two2():
    assert True
 
 
def test_three3():
    assert True

 在终端运行:

pytest .\test_order.py --alluredir=./results
allure serve .\results 

运行结果:

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/337822.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android逆向之指令集和CPU架构

文章目录 前言引子 指令集复杂指令集&#xff08;CISC&#xff09;精简指令集&#xff08;RISC&#xff09;RISC-VARM和x86的区别指令集和汇编汇编语言是用人类看得懂的语言来描述指令集不同指令集对应不同的汇编语言 ARM和x86指令集差异ARM指令集x86指令集 CPU架构和ABI什么是…

YARN节点故障的容错方案

YARN节点故障的容错方案 1. RM高可用1.1 选主和HA切换逻辑 2. NM高可用2.1 感知NM节点异常2.2 异常NM上的任务处理 4. 疑问和思考4,1 RM感知NM异常需要10min&#xff0c;对于app来说是否太长了&#xff1f; 5. 参考文档 本文主要探讨yarn集群的高可用容错方案和容错能力的探讨。…

HCIP之BGP联邦实验

华子目录 实验拓扑及要求规划网段和IP地址实验步骤配置IP地址先让IGP通建BGP邻居修改ospf下环回接口网络类型修改联邦之间的最大跳数每台运行BGP的路由器批量宣告路由修改本地下一跳测试 实验拓扑及要求 规划网段和IP地址 实验步骤 配置IP地址 r1配置&#xff0c;依次类推 […

软件需求规格说明书-word

软件需求规格说明书编写规范 1.项目背景 2.项目目标 3.系统架构 4.总体流程 5.名称解释 6.功能模块 软件开发全文档获取&#xff1a;软件项目开发全套文档下载_软件项目文档-CSDN博客

【Linux学习】进程信号

目录 十七.进程信号 导言 17.1 linux中的信号列表 17.2 标准信号与实时信号 17.3 信号的产生 17.3.1 通过终端按键产生信号 17.3.2 调用系统函数产生信号 17.3.3 软件条件产生信号 17.3.4 硬件异常产生信号 17.3.5 【补充】核心转储 Core Dump 17.4 信号的阻塞 17.4.1 信号相关…

Hive-SQL语法大全

Hive SQL 语法大全 基于语法描述说明 CREATE DATABASE [IF NOT EXISTS] db_name [LOCATION] path; SELECT expr, ... FROM tbl ORDER BY col_name [ASC | DESC] (A | B | C)如上语法&#xff0c;在语法描述中出现&#xff1a; []&#xff0c;表示可选&#xff0c;如上[LOCATI…

vue3-模版引用

模版引用 ref 属性 场景&#xff1a;需要直接访问底层 DOM 元素。 方法&#xff1a;使用特殊的 ref 属性。 <input ref"input">ref 属性 允许我们在一个特定的 DOM 元素或子组件实例被挂载后&#xff0c;获得对它的直接引用。 访问模板引用 小 Demo: 当 i…

游戏渲染管道

高级的渲染步骤是由管道&#xff08;软件架构&#xff09;实现&#xff0c;各个阶段会操作输入流中的数据项&#xff0c;并对输出流产生数据。 管道每个阶段独立于其他阶段&#xff0c;所以管道的最大有点在于非常适合并行化。 渲染管道分为3个概要阶段。但在这里多讲几个阶段…

【大数据分析与挖掘技术】Mahout聚类算法

目录 一、聚类的基本概念 二、常见的Mahout数据结构 &#xff08;一&#xff09;向量&#xff08;Vector&#xff09; &#xff08;二&#xff09;文本文档 三、聚类算法种类 &#xff08;一&#xff09;K-means &#xff08;二&#xff09;模糊K-means &#xff08;…

中国电子学会2022年6月份青少年软件编程Scratch图形化等级考试试卷一级真题

一、单选题(共25题&#xff0c;共50分) 1.广场中有声控喷泉&#xff0c;当声音的音量大于60的时候&#xff0c;喷泉就会喷出水&#xff0c;现在的音量为30&#xff0c;下列哪个选项可以让喷泉喷出水&#xff1f;&#xff08;2分&#xff09; A. B. C. D. 答案解析&#x…

搭建开源数据库中间件MyCat2-配置mysql数据库双主双从

mycat2官网&#xff1a;MyCat2 前言&#xff1a;mycat2下载地址无法访问&#xff0c;不知道是不是被DNS污染了&#xff0c;还是需要搭梯子访问&#xff0c;所以我只能找到1.21的版本进行安装。搭建mycat2的前提是搭建数据库主从复制。 架构&#xff1a;双主双从 配置&#xf…

基于OpenSSL的SSL/TLS加密套件全解析

概述 SSL/TLS握手时&#xff0c;客户端与服务端协商加密套件是很重要的一个步骤&#xff0c;协商出加密套件后才能继续完成后续的握手和加密通信。而现在SSL/TLS协议通信的实现&#xff0c;基本都是通过OpenSSL开源库&#xff0c;本文章就主要介绍下加密套件的含义以及如何在O…

通信入门系列——连续卷积定理、循环卷积、离散卷积定理

本节目录 一、连续卷积定理 1、时域卷积定理 2、频域卷积定理 二、循环卷积 三、离散卷积定理本节内容 一、连续卷积定理 卷积定理在信号分析中占有重要的地位&#xff0c;包括时域卷积定理和频域卷积定理。在信号分析领域&#xff0c;通常采用基于卷积定理的时频域分析&#…

vectorCast——CBA功能实现代码手动覆盖

选择被测文件&#xff0c;点击右键&#xff0c;选择add coverage analysis.选择添加覆盖分析后&#xff0c;会自动打开CBA。此时就可以在代码里选择没有覆盖的代码&#xff0c;勾选后填写未覆盖分析并保存&#xff0c;就可以实现代码覆盖了。查看覆盖率报告。 手动覆盖代码完成…

结构体内存对齐(面试重点)

结构体内存对齐 1. 结构体类型的声明1.1 结构体的概念1.1.1 结构的声明1.1.2 结构体变量的创建和初始化 1.2 结构的特殊声明1.3 结构的自引用 2. 结构体内存对齐2.1 对齐规则2.1.1 练习1:2.1.2 练习2:2.1.3 练习3:2.1.4 练习4: 2.2 offsetof宏的使用2.3 为什么存在内存对齐?2.…

Vue2的双向数据绑定

Vue2的双向数据绑定 Observer&#xff1a;观察者&#xff0c;这里的主要工作是递归地监听对象上的所有属性&#xff0c;在属性值改变的时候&#xff0c;触发相应的watcher。 Watcher&#xff1a;订阅者&#xff0c;当监听的数据值修改时&#xff0c;执行响应的回调函数&#x…

基于Springboot的民宿在线预定平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的民宿在线预定平台(有报告)。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring…

通过完善价值观评价,建立企业多维度评价体系

一、背景A公司是一家互联网公司&#xff0c;主要负责技术开发、软件应用方面的工作&#xff0c;致力于长期的软件研发、服务器开发、游戏端开发等&#xff0c;依托于专业技术实力和长期的实践积累&#xff0c;公司不断整合各类资源、深入开发技术&#xff0c;规模不断扩大&…

详解Redisson

第1章&#xff1a;Redisson简介 大家好&#xff0c;我是小黑&#xff0c;咱们今天来聊聊Redisson&#xff0c;Redisson不只是简单地对Redis进行了封装&#xff0c;它还提供了一系列高级的分布式Java数据结构&#xff0c;像是分布式锁、原子长整型这种。 首先&#xff0c;Redi…

02_Collection

文章目录 集合Java的集合类 Collectioniterator方法 集合 在Java中&#xff0c;指的就是存放数据的容器&#xff0c;是一个载体&#xff0c;可以一次容纳多个对象。 解决Bug的两种方法&#xff1a; 打印 System.out.println();log.info(); debug 检查数据 Java的集合类 Co…