python web自动化(Allure报告)

news2025/3/16 19:40:57

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   轻微缺陷(必须项⽆提示,或者提示不规范)


 


 


 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【排序算法】——归并排序(递归与非递归)含动图

制作不易,三连支持一下吧!!! 文章目录 前言一.归并排序递归方法实现二.归并排序非递归方法实现 前言 这篇博客我们将介绍归并排序的原理和实现过程。 一、归并排序递归方法实现 基本思想: 归并排序(MERGE-…

四元数学习总结(1)

导语:相比矩阵,用四元数处理3D旋转的优势是毋庸置疑的,但由于概念复杂,难于理解,一直令我摸不着头脑。最近学习更是发现在机器人、无人机、SLAM等先进领域,四元数被当成实数、整数这样的基础,所…

jmeter安装SSH插件

安装SSH插件 下载jar包: ApacheJMeter-ssh-1.2.0.jar jsch-0.1.55.jar jar包放在jmeter安装路径 lib下和lib/ext文件夹下: 重启jmeter即可:

BGP选路实验

BGP 选路实验 一、实验拓扑 二、实验要求及分析 实验要求: 1、使用preva1策略,确保R4通过R2到达192.168.10.0/24 2、使用AS_Path策略,确保R4通过R3到达192.168.11.0/24 3、配置MED策略,确保R4通过R3到达192.168.12.0/24 4、…

软考-必须要背的内容

一、设计模式 1、创建型 抽象工厂:提供一个接口,创建一系列的相关相互依赖的对象,无需指定具体的类; eg:系统软件,支持多种数据库 生成器:将一个复杂类的表示与构造相分离,使得相…

PX4使用yolo仿真环境搭建

文章目录 前言一、修改机架sdf文件二、安装yolo三、运行 前言 ubuntu20.04 PX4 1.13.3 已配置好PX4 ROS gazebo环境 一、修改机架sdf文件 将双目相机加到仿真的iris机架上 修改下图文件 添加如下&#xff1a; <include><uri>model://stereo_camera</uri>…

D - AtCoder Wallpaper(abc)

思路&#xff1a;f(c, d) f(a, b) - f(a, d) - f(c, b) 代码&#xff1a; int f(int x, int y){if(y % 2 0){y y / 2;int ans y * (x / 4) * 8;x % 4;if(x 1){ans y * 3;}else if(x 2){ans y * 6;}else if(x 3){ans y * 7;}return ans;}else{y / 2;int ans y * (x…

从零开始搭建Springboot项目脚手架4:保存操作日志

目的&#xff1a;通过AOP切面&#xff0c;统一记录接口的访问日志 1、加maven依赖 2、 增加日志类RequestLog 3、 配置AOP切面&#xff0c;把请求前的request、返回的response一起记录 package com.template.common.config;import cn.hutool.core.util.ArrayUtil; import cn.hu…

Go语言的内存泄漏如何检测和避免?

文章目录 Go语言内存泄漏的检测与避免一、内存泄漏的检测1. 使用性能分析工具2. 使用内存泄漏检测工具3. 代码审查与测试 二、内存泄漏的避免1. 使用defer关键字2. 使用垃圾回收机制3. 避免循环引用4. 使用缓冲池 Go语言内存泄漏的检测与避免 在Go语言开发中&#xff0c;内存泄…

SpringCloud+Python 混合微服务,如何打造AI分布式业务应用的技术底层?

尼恩&#xff1a;LLM大模型学习圣经PDF的起源 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;经常性的指导小伙伴们改造简历。 经过尼恩的改造之后&#xff0c;很多小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试机会&#x…

力扣刷题---961. 在长度 2N 的数组中找出重复 N 次的元素【简单】

题目描述&#x1f357; 给你一个整数数组 nums &#xff0c;该数组具有以下属性&#xff1a; nums.length 2 * n. nums 包含 n 1 个 不同的 元素 nums 中恰有一个元素重复 n 次 找出并返回重复了 n 次的那个元素。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,3] 输…

智能猫眼锁核心解决方案以及芯片简介SSD222

书接上回&#xff0c;前篇文章我们诠释了IP 网络摄像系统的定义以及组成部分的功能&#xff0c;也大概的讲了一下所针对的市场以及举例介绍了一款相关芯片&#xff0c;详情可点击下面卡片浏览高集成IP摄像SOC处理方案简介https://blog.csdn.net/Chipsupply/article/details/139…

XILINX FPGA DDR 学习笔记(一)

DDR 内存的本质是数据的存储器&#xff0c;首先回到数据的存储上&#xff0c;数据在最底层的表现是地址。为了给每个数据进行存放并且在需要的时候读取这个数据&#xff0c;需要对数据在哪这个抽象的概念进行表述&#xff0c;我们科技树发展过程中把数据在哪用地址表示。一个数…

【C++】<知识点> 标准模板库STL(上)

文章目录 一、STL---string类 1. 常用构造函数 2. 常用操作 3. 字符串流处理 二、STL---容器 1. STL及基本概念 2. 顺序容器简介 3. 关联容器简介 4. 容器适配器简介 5. 常用成员函数 三、STL---迭代器 1. 普通迭代器 2. 双向、随机访问迭代器 3. 不同容器的迭代器…

项目思考-编辑器

1、文本生成编辑器 2、图片合成编辑器&#xff08;未完待续&#xff09; 3、文字和图像版本的技术要点&#xff0c;区别&#xff08;未完待续&#xff09; 4、编辑器的人员配置考虑&#xff0c;技术难点分析&#xff08;未完待续&#xff09; 1、文本生成编辑器

AI爆文写作:如何找对标账号的文章?告诉你一个秘密:找低粉爆款的抄!这样风险最小!

一、注册新号来训练推荐爆款的素材 首先第一点:强烈推荐注册一个专用个人微信号,通过阅读,点赞和在看等动作,训练算法为我们推荐爆款素材。 二、为什么要对标低分爆款? 2.1 什么是低粉爆款? 就是粉丝量很少,但却有很高阅读量,甚至10万+阅读的文章。 对标账号的文章…

从零开始学逆向,js逆向启蒙:有道翻译

语言&#xff1a;js、python 工具&#xff1a;pycharm、chrome浏览器F12调试、chatgpt&#xff08;补充js第三方库&#xff0c;转python&#xff09;、node.js(js运行)&#xff08;必须&#xff09; 目标&#xff1a;学习掌握基本js逆向知识。 对象&#xff1a; 有道翻译 &a…

Nginx - 安全基线配置与操作指南

文章目录 概述中间件安全基线配置手册1. 概述1.1 目的1.2 适用范围 2. Nginx基线配置2.1 版本说明2.2 安装目录2.3 用户创建2.4 二进制文件权限2.5 关闭服务器标记2.6 设置 timeout2.7 设置 NGINX 缓冲区2.8 日志配置2.9 日志切割2.10 限制访问 IP2.11 限制仅允许域名访问2.12 …

移动硬盘难题:不显示容量与无法访问的解决策略

在使用移动硬盘的过程中&#xff0c;有时会遇到一些棘手的问题&#xff0c;比如移动硬盘不显示容量且无法访问。这种情况让人十分头疼&#xff0c;因为它不仅影响了数据的正常使用&#xff0c;还可能导致重要数据的丢失。接下来&#xff0c;我们就来详细探讨一下这个问题及其解…

java 子类继承父类

为什么需要继承 我现在要有两个类一个 一个是小学生&#xff0c;一个是大学生 代码 小学生 package b; public class encapsulatio{public String name;public int age;public double score;public void setscore (double score) {this.scorescore;}public void testing() {S…