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 用例执行,返回driveryield 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、teardownif 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.mzph.cn/web/15275.shtml

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

相关文章

ROS学习记录:用C++实现IMU航向锁定

前言 获取IMU数据的C节点 在了解了如何获取到IMU的姿态信息(链接在上面)后,接下来尝试实现让一个节点在订阅IMU数据的时候,还能发布运动控制指令,使机器人能对姿态变化做出反应,达到一个航向锁定的效果。 …

神奇动物在哪里,但导演是微软

大数据产业创新服务媒体 ——聚焦数据 改变商业 一说到计算机视觉,大多数人第一时间联想到的便是“人脸识别”、“自动驾驶“、道路检测”等跟我们日常生活息息相关的关键词。而在2024年的5月末,微软在GitHub上面上传了这样一个计算机视觉的项目&#x…

几个速度比较快的 Linux 开源镜像站及支持的资源列表

搜狐开源镜像站 https://mirrors.sohu.com/ File Name CPAN/ FreeBSD/ QpenBSD/ RockyL apache/ archlinux/ centos/ ceph/ cygwin/ debian/ debian–cd/ debian-security/ deepin/ deepin-cd/ docker-ce/ fedora/ fedora-epel/ gentoo/ lib/ mysql/ nginx/ opensuse/ php/ ubu…

C++笔试强训day32

目录 1.素数回文 2.活动安排 3.合唱团 1.素数回文 链接https://www.nowcoder.com/practice/d638855898fb4d22bc0ae9314fed956f?tpId290&tqId39945&ru/exam/oj 现将其转化为回文数(这里用字符串存储比较方便转化),然后判断是否为…

【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…

ArcGIS不同图斑设置不同的透明度

对于设置一个图层的整体的透明度,我们在 ArcGIS制作带蒙版的遥感影像地图http://mp.weixin.qq.com/s?__bizMzIzNjM2NTYxMg&mid2247509080&idx1&sn38dccf0a52bb3bb3758f57114ee38b72&chksme8da161bdfad9f0d363da90959a8524dcf2b60d0e8d999f8ebeef0…

Unity面试八股文之基础篇

文章目录 前言1. Unity的生命周期加载第一个场景Editor在第一次帧更新之前帧之间更新顺序协程销毁对象时退出时 2. Unity 协程和线程,进程的区别3. 本地坐标系 世界坐标系4. 碰撞器和触发器的区别后话 前言 开设这个栏目的博文会写一些有关unity的面试题目,在面试的…

【spring】@ResponseBody注解学习

ResponseBody介绍 ResponseBody 是一个Spring框架中的注解,主要用于Web开发,特别是在Spring MVC框架中。它的核心作用是改变Spring MVC处理HTTP请求响应的行为,使得从控制器方法返回的数据直接写入HTTP响应体(Response Body&…

Python高级进阶--slice切片

slice切片⭐⭐ 在 Python 中,切片操作是一种常见且方便的方式,用于从字符串、列表或元组中获取部分元素。这种操作通过指定起始索引、结束索引和步长来实现。下面我们来看一些关于切片的简单介绍以及一些常见用法。 1. 切片简介 取一个str、list、tup…

【Unity2D:Animator】为角色添加动画效果

一、添加Animator组件并创建Animator Controller文件 1. 添加Animator组件: 2. 在Assets-Art文件夹中新建一个名为Animations的文件夹,用来存储所有动画资源 3. 在Animations文件夹中新建一个名为Player的文件夹,再创建一个名为Animators的文…

LeetCode //C - 119. Pascal‘s Triangle II

119. Pascal’s Triangle II Given an integer rowIndex, return the rowIndexth (0-indexed) row of the Pascal’s triangle. In Pascal’s triangle, each number is the sum of the two numbers directly above it as shown: Example 1: Input: rowIndex 3 Output: …

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

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

JS(ES_6)_2

1.创建对象的6种方式&#xff1a; 1. obnew Object() ob.nameah ob.age18 2. ob{name:ah,gae:18} 3.工厂模式&#xff1a; 设计一个函数&#xff0c;专门生产Person类型的对象 <script>function createPerson(name,age,family) {var o new Object();o.name name;o.…

软件设计师备考 | 案例专题之数据流图 概念与例题

案例分析专题大纲&#xff1a; 数据流图基本概念 基本图形元素&#xff1a;外部实体、加工、数据存储、数据流 数据流&#xff1a;由一组固定成分的数据组成&#xff0c;表示数据的流向。在DFD中&#xff0c;数据流的流向必须经过加工。加工&#xff1a;描述了输入数据流到输出…

啊哈!算法-第2章-栈、队列、链表

啊哈!算法-第2章-栈、队列、链表 第1节 解密qq号——队列第2节 解密回文——栈第3节 纸牌游戏——小猫钓鱼第4节 链表第5节 模拟链表 第1节 解密qq号——队列 新学期开始了&#xff0c;小哈是小哼的新同桌(小哈是个大帅哥哦~)&#xff0c;小哼向小哈询问 QQ 号&#xff0c; 小…

uniapp微信小程序解决open-type获取用户头像,返回临时路径问题!

解决 open-type 为 chooseAvatar&#xff0c;返回临时路径问题 文章目录 解决 open-type 为 chooseAvatar&#xff0c;返回临时路径问题效果图Demo获取头像回调数据结构效果图解决方式上传到服务器转base64 基于微信小程序获取头像昵称规则调整后&#xff0c;当小程序需要让用户…

高通Android 12/13 设置和获取ADB状态

/*** 设置ADB状态** param isEnable*/public void setADB(boolean isEnable) {Settings.Global.putInt(mContext.getContentResolver(), Settings.Global.ADB_ENABLED, isEnable ? 1 : 0);}/*** 获取ADB状态** return*/public boolean getADB() {return Settings.Global.getIn…

虚拟化技术[3]之网络虚拟化

网络虚拟化 网络虚拟化简介核心层网络虚拟化接入层网络虚拟化虚拟机网络虚拟化案例: VMware网络虚拟化技术虚拟网络接口卡虚拟交换机vSwitch分布式交换机端口组VLAN 网络虚拟化简介 传统的数据中心&#xff1a;服务器之间操作系统和上层软件异构、接口与数据格式不统一&#x…

基于hive的酒店价格数据可视化分析系统设计和实现

摘要 本文基于Django框架和Hive技术&#xff0c;设计和实现了一种酒店价格数据可视化分析系 统&#xff0c;旨在为酒店管理者提供直观、清晰的数据洞察和决策支持。在研究中&#xff0c;首先深入分 析了酒店价格数据可视化分析系统的背景和意义&#xff0c;认识到对于酒店行…

3.Redis之Redis的环境搭建redis客户端介绍

1.版本的选取 安装 Redis&#xff1a;Redis 5 系列~~ 在 Linux 中进行安装~~ Redis 官方是不支持 Windows 版本的~~ 微软维护了一个 Windows 版本的 Redis 分支 Centos和Ubuntu.Docker 2.如何进行安装&#xff1f;&#xff1f;&#xff1f; 1.ubuntu 2.centos yum instal…