python web自动化(Allure报告)

Allure详细安装请看之前的博客

1.Allure配置与⼊⻔

        运⾏⽤例,⽣成allure报告
        pip install allure-pytest -i

      https://mirrors.aliyun.com/pypi/simple/

        运⾏⽤例,⽣成allure报告
        

# main.py
import os
import pytest
if __name__ == '__main__':
# 如果加了`-s`或者`-vs`命令,那么打印的内容就不会显示在报
告中。
pytest.main(['--alluredir', './result', '--clean-alluredir'])
os.system('allure generate ./result/ -o ./report/ --clean')

        看到这个命令表示allure报告⽣成成功了:

                

打开report的如下这个

allure报告清空上⼀次运⾏的记录

如果不加清楚的命令,会导致历史数据有缓存,导致不会⽣成最新的数据(例如:更改⽤例的名称后,⽣成的报告依旧是历史的

        

--alluredir:指定报告的⽬录路径
--clean-alluredir:如果已经存在报告,就先清空它
示例:
pytest.main(['--alluredir', './result', '--clean-alluredir'])
--clean:清除系统中的allure缓存
示例:
os.system('allure generate ./result/ -o ./report/ --clean')


        

2.Allure报告添加失败截

固定的钩⼦函数名称(不能随意修改) :pytest_runtest_makereport
钩⼦函数需要配置在conftest.py中:

import allure
import pytest
from selenium import webdriver


@pytest.fixture()
def browser():
    global driver
    # 01 用例的前置步骤,初始化浏览器对象
    driver = webdriver.Chrome()

    # 02 用例执行,返回driver
    yield driver

    # 03 用例的后置步骤,关闭浏览器
    driver.quit()


@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport():
    # 获取测试用例的执行结果,yield,返回给out对象,然后再去转化为result对象
    out = yield

    """
        从result对象out获取调用结果的测试报告,返回一个report对象
        
        report对象的属性:
        包括when(setup,call,teardown等三个值)、nodeid(测试用例的名称)、
        outcome(用例的执行结果, passed, failed)
    """
    report = out.get_result()  # 返回一个report对象

    # 仅仅获取用例call阶段的执行结果,不包含setup、teardown
    if report.when == "call":
        # 获取用例call执行结果为失败的情况
        xfail = hasattr(report, "wasxfail")  # hasattr方法会:返回对象是否具有给定名称的属性

        # 如果测试用例被跳过且标记为预期失败,或者测试用例执行失败且不是预期失败
        if (report.skipped and xfail) or (report.failed and not xfail):
            # 添加allure报告截图
            with allure.step("添加失败的截图 ---> "):
                allure.attach(driver.get_screenshot_as_png(), "失败的截图",
                              allure.attachment_type.PNG)

        elif report.passed:
            # 如果测试用例执行通过,添加allure报告截图
            with allure.step("添加成功的截图 ---> "):
                allure.attach(driver.get_screenshot_as_png(), "成功的截图",
                              allure.attachment_type.PNG)

3.Allure⽤例描述详解

        作⽤:提⾼测试报告的可读性,减少团队沟通成本,提升⼯作效率
        

                

# 登录模块
import allure


@allure.epic("读书屋项目")
@allure.feature("读书屋 - 登录模块")
class TestReadBookHomesLogin:

    @allure.step("步骤1:打开项目地址")
    def step01(self, browser):
        # 步骤1:打开项目地址
        browser.get("http://novel.hctestedu.com/user/userinfo.html")

    @allure.step("步骤2:输入账号")
    def step02(self, browser):
        browser.find_element("id", "txtUName").send_keys("17798989898")

    @allure.step("步骤3:输入密码")
    def step03(self, browser):
        browser.find_element("id", "txtPassword").send_keys("123456")

    @allure.step("步骤4:点击登录")
    def step04(self, browser):
        browser.find_element("id", "btnLogin").click()

    @allure.title("login01测试用例")
    @allure.story("登录流程用例:流程/场景01")
    @allure.testcase("http://novel.hctestedu.com/user/login.html")
    @allure.issue("https://www.baidu.com/?tn=49055317_54_hao_pg")
    @allure.description("2024年5月25日20:26:00")
    def test_read_login01(self, browser):
        self.step01(browser)
        self.step02(browser)
        self.step03(browser)
        self.step04(browser)
        print("读书屋项目 - 登录 - login01测试用例")

    @allure.title("login02测试用例")
    @allure.story("登录流程用例:流程/场景02")
    @allure.testcase("https://fanyi.youdao.com/index.html#/")
    def test_read_login02(self, browser):
        print("读书屋项目 - 登录 - login02测试用例")


@allure.epic("读书屋项目")
@allure.feature("读书屋 - 作家专区")
# 作家专区
class TestReadBookHomesWRITER:

    @allure.title("writer01测试用例")
    @allure.story("作家专区流程用例:流程/场景01")
    def test_read_writer01(self, browser):
        print("读书屋项目 - 作家专区 - writer01测试用例")

4.⽤例等级设置

通过 @allure.severity() 对测试⽤例设置不同的等级

blocker  阻塞缺陷(功能未实现,⽆法下⼀步)
critical  严重缺陷(功能点缺失)
normal   ⼀般缺陷(边界情况,格式错误)
minor  次要缺陷(界⾯错误与ui需求不符)
trivial   轻微缺陷(必须项⽆提示,或者提示不规范)


 


 


 

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

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

相关文章

Softing工业推出新品edgeGate:一款用于工业边缘和云应用的硬件网关

2024年4月17日(哈尔),Softing工业自动化在2024年汉诺威工业博览会上首次展示了新品edgeGate。该产品是一个无需维护的硬件物联网网关解决方案,可将生产数据从PLC和数控机床控制器传输至工业边缘及物联网云平台。 (edge…

plt多子图设置

import matplotlib.pyplot as plt# 使用 subplots 函数创建一个 2x3 的子图网格 fig, axs plt.subplots(nrows2, ncols3, figsize(16, 10)) # 调整 figsize 来改变图像大小# 遍历每个子图,并绘制一些内容(这里只是简单的示例) for ax in ax…

【Python搞定车载自动化测试】——Python实现CAN总线Bootloader刷写(含Python源码)

系列文章目录 【Python搞定车载自动化测试】系列文章目录汇总 文章目录 系列文章目录💯💯💯 前言💯💯💯一、环境搭建1.软件环境2.硬件环境 二、目录结构三、源码展示1.诊断基础函数方法2.诊断业务函数方法…

探索Python技巧:零基础学习缩进与逻辑关系

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、理解Python的缩进语法 缩进规则详解 二、缩进在逻辑关系中的应用 逻辑块示例 三、实…

【LSTM】LSTM cell的门结构学习笔记

文章目录 1. LSTM cell2. 门结构3. 门的公式4. 门的参数5. 重点关系厘清 1. LSTM cell 如文章 LSTM网络与参数学习笔记 中介绍, LSTM cell指的是一个包含隐藏层所有神经元的结构.但是LSTM门控单元的公式如何理解、门和LSTM cell神经元如何对应、门函数的参数维度、不同时间步不…

工作中的相关问题

最近属于各方面繁杂事务较多,所以相关问题也较为分散,没有细致联系,仅为一个自我小总结,序号并无相关学习顺序,未全的点后续补充 参考链接:5分钟带你深入浅出搞懂 Nginx | 二哥的Java进阶之路 (javabetter…

【NumPy】NumPy实战入门:线性代数(dot、linalg)与随机数(numpy.random)详解

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

MySQL库/表/数据的操作

文章目录 1.数据库操作1.1 创建、删除、查看和修改1.2 编码格式1.3 备份和恢复 2.表的操作2.1 创建表2.2 存储引擎2.3 查看表、修改表、删除表 3.数据类型3.1整数类型3.2字节类型(bit)3.3浮点类型(bit)3.4 decimal3.5 字符串类型3.6 日期和时间类型3.7 enum和set关于如何查找想…

多线程事务

一、业务场景 我们在工作中经常会到往数据库里插入大量数据的工作,但是既需要保证数据的一致性,又要保证程序执行的效率。因此需要在多线程中使用事务,这样既可以保证数据的一致性,又能保证程序的执行效率。但是spring自带的Trans…

【一个糟糕的词:省流】

今日思考,博主分享📝,原文如下, 我最近听到了一个特别糟糕的词叫省流。我甚至认为这个词可以用来衡量一个人的智商啊,我们可以把一个知识简单的分成三部分问题,答案思维方式就是这个答案是怎么推导出来的啊…

【FPGA】VGA显示文字、彩条、图片——基于DE2-115

文章目录 前言一、VGA概述1.1 简述1.2 管脚定义1.3 VGA显示原理1.4 VGA时序标准1.5 VGA 显示模式及相关参数 二、VGA显示自定义的汉字字符2.1 点阵汉字生成2.2 生成BMP文件2.3 生成txt文件2.4 实现效果 三、VGA显示条纹3.1 实现流程3.2 实现效果 四、VGA输出一幅彩色图像4.1 bm…

代码随想录——找树左下角的值(Leetcode513)

题目链接 层序遍历 思路:使用层序遍历,记录每一行 i 0 的元素,就可以找到树左下角的值 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}*…

基于SSH的母婴用品销售管理系统带万字文档

文章目录 母婴商城系统一、项目演示二、项目介绍三、系统部分功能截图四、万字论文参考五、部分代码展示六、底部获取项目源码和万字论文参考(9.9¥带走) 母婴商城系统 一、项目演示 母婴商城系统 二、项目介绍 基于SSH的母婴商城系统 系统…

了解K8s集群kubectl命令进行陈述式资源管理

前言 在 Kubernetes 集群中,通过陈述式和声明式资源管理是确保应用程序高效运行的关键。认识这两种管理方法,能够更好地掌握 Kubernetes 集群的运维和管理。 目录 一、K8s 资源管理操作分类 1. 陈述式 2. 声明式 3. K8s 集群管理常用命令概览 二…

lenovo联想小新Pro 16 APH8 2023款(83AR)笔记本电脑原装出厂Windows11系统镜像安装包下载

恢复出厂开箱状态OEM预装win11系统,自带恢复重置初始化还原功能 下载链接:https://pan.baidu.com/s/1n_mPM4ZrLPrmXpCTukuyCQ?pwdmnwj 提取码:mnwj 联想原装系统自带所有驱动、出厂主题壁纸、系统属性联机支持标志、Office办公软件、联想…

C++成员函数 - 析构函数

析构函数 析构函数 是特殊的成员函数,其 特征 如下: 1. 析构函数名是在类名前加上字符 ~ 。 2. 无参数无返回值类型。 3. 一个类只能有一个析构函数。若未显式定义,系统会自动生成默认的析构函数。注意:析构函数不能重 载 …

OpenHarmony 实战开发——一文总结ACE代码框架

一、前言 ACE_Engine框架是OpenAtom OpenHarmony(简称“OpenHarmony”)的UI开发框架,为开发者提供在进行应用UI开发时所必需的各种组件,以及定义这些组件的属性、样式、事件及方法,通过这些组件可以方便进行OpenHarmo…

AI大模型探索之路-基础篇5:GLM-4解锁国产大模型的全能智慧与创新应用

目录 前言一、GLM4大模型总体概述二、GLM4和GPT4功能对比三、GLM4和GPT4性能对比1、基础能力(英文)2、指令跟随能力3、对齐能力4、长文本能力5、多模态-文生图 四、GLM-4 ALL Tools1、文生图2、代码解释器3、网页浏览4、Function Call5、多工具自动调用 …

FTP协议——BFTPD安装(Linux)

1、简介 BFTPD,全称为 Brutal File Transfer Protocol Daemon,是一个用于Unix和类Unix系统的轻量级FTP服务器软件。它的设计理念是提供一个简单、快速、安全的FTP服务器解决方案,特别适用于需要低资源占用的环境。 2、步骤 环境&#xff1…

【介绍下Pwn,什么是Pwn?】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…