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,一经查实,立即删除!

相关文章

SpringBoot如何实现热部署

热部署 使用SpringBoot提供的DevTools实现热部署 原理:实时监控classpath下文件的变化(即编译后的target目录),如果发生变化则自动重启 配置:添加DevTools的依赖即可(需要开启IDEA的自动编译&#xff09…

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

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

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

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

2024年华为OD机试真题-停车场车辆统计-C++-OD统一考试(C卷D卷)

题目描述: 特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3),统计停车场最少可以停多少辆车,返回具体的数目。 输入描述: 整型字符串数组cars[],其中1表示有车,0…

通过Python爬取公告内容

在网络时代,信息获取变得更加便捷。通过网络爬虫技术,我们可以从互联网上快速获取各种信息。本文将介绍如何使用 Python 爬虫工具从指定网站上获取公告内容,并提取其中的关键信息。 1. 简介 在本文中,我们将使用 Python 的 requ…

几个速度比较快的 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 现将其转化为回文数(这里用字符串存储比较方便转化),然后判断是否为…

Ubuntu安装IPOPT和Casadi

1.IPOPT安装 1.1安装所需功能包 sudo apt-get install cppad sudo apt-get install gcc g gfortran subversion patch wget1.2下载最新源代码3.14 https://www.coin-or.org/download/source/Ipopt/1.3解压进入IPOPT安装包,下载ASL git clone https://github.com/…

python项目中的__pycache__有什么作用?

在 Python 项目中,目录 __pycache__ 通常用于存储已编译的字节码文件。这些文件是 Python 解释器在导入模块时生成的,以加快后续的模块加载速度。 具体内容 __pycache__ 目录中的文件是以 .pyc 扩展名结尾的字节码文件。文件名通常会包含原始 Python 源…

【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面试宝典:Python中与网络协议基础和socket编程相关的知识和面试笔试题(1000加面试笔试题助你轻松捕获大厂Offer)

Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十四章:网络编程:第一节:网络协议基础和socket编程】 第十四章:并发编程第一节:网络协议基础和socket编程网络协议基础Socket编程创建SocketTCP服务器TCP客户端数据传输关闭Socket…

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

vue项目移动端商场

一、项目前端页面展示 二、项目整体目录结构 三、项目流程 1. vue快速创建基础项目 创建项目 vue create hk-shop 1 选择需要的配置 创建基础文件夹目录 src文件夹下文件夹目录: ① views 文件夹存放界面 ② components 文件夹存放界面中局部组件 ③ config 文件夹存…

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

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