首页 > 其他分享 >WEB自动化-Allure报告-使用钩子函数 进行失败截图

WEB自动化-Allure报告-使用钩子函数 进行失败截图

时间:2023-08-10 22:35:42浏览次数:51  
标签:WEB 截图 函数 钩子 pytest yield Allure report

Allure报告中 支持使用钩子函数进行失败截图

 

 

 

使用pytest_runtest_makereport钩子函数实现allure报告添加用例失败截图(函数名固定的)   Hook函数又称为钩子函数,它的作用可以理解成钩住自己喜欢的东西(在window中,喜欢的东西可理解为消息),然后对自己喜欢的东西单独做处理   1、先创建conftest文件,   1)定义浏览器的driver,   2)写@pytest.hookimpl(hookwrapper=True);判断返回的result中有错误,就进行截图。

它的作用和装饰器@pytest.mark.hookwrapper是一样的,当pytest调用钩子函数时,它首先执行钩子函数装饰器并传递与常规钩子函数相同的参数(个人理解是当用该装饰器@pytest.hookimpl(hookwrapper=True)装饰时,他会把其他常规钩子函数的参数都传递给当前被装饰的钩子函数)

在钩子函数装饰器的yield处,Pytest将执行下一个钩子函数实现,并以Result对象的形式,封装结果或异常信息的实例的形式将其结果返回到yield处。因此,yield处通常本身不会抛出异常(除非存在错误)

总结如下:
@pytest.hookimpl(hookwrapper=True)装饰的钩子函数,有以下两个作用:
(1)可以获取到测试用例不同执行阶段的结果(setup,call,teardown)
(2)可以获取钩子方法的调用结果(yield返回一个result对象)和调用结果的测试报告(返回一个report对象)
————————————————
版权声明:本文为CSDN博主「Bug 挖掘机」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011035397/article/details/109546814

import allure
import pytest
from selenium import webdriver


@pytest.fixture()
def browser():
    global driver
    driver = webdriver.Chrome()

    yield driver

    driver.quit()


@pytest.hookimpl(hookwrapper=True)
def pytest_runtest_makereport():
    # 获取到用例执行之后的result对象
    out = yield
    """
        setup:
        call: 测试执行中
        teardown:
        wasxfail: 标记失败的用例
    """
    report = out.get_result()

    # 判断call阶段(测试用例的执行阶段),如果你的用例被标记为失败,那么就完成截图
    if report.when == "call":
        xfail = hasattr(report, "wasxfail")
        # report.skipped: 用例跳过
        # report.failed:用例失败
        if (report.skipped and xfail) or (report.failed and not xfail):
            with allure.step("添加失败截图... ..."):
                allure.attach(driver.get_screenshot_as_png(), "失败截图", allure.attachment_type.PNG)

 

2、创建测试用例文件

 3、创建main文件,进行执行

import os

import pytest


def run():
    pytest.main(['--alluredir', './result', '--clean-alluredir'])
    os.system('allure generate ./result/ -o ./report/ --clean')


if __name__ == '__main__':
    run()

4、查看报告

 

 

标签:WEB,截图,函数,钩子,pytest,yield,Allure,report
From: https://www.cnblogs.com/gezirui/p/17621759.html

相关文章

  • WEB自动化-Allure报告-Allure安装和简单用法
    WEB自动化测试可以借助Allure生成美观的测试报告。1、安装工具及配置环境变量1.安装JDK1.8才可运行allure,直接百度,一大堆2.下载Allure的安装包(版本号:2.13.5)https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/3.解压Allure压缩包......
  • CTFer成长记录——CTF之Web专题·buuctf—admin
    一、题目链接https://buuoj.cn/challenges#[HCTF%202018]admin二、解法步骤  本题页面十分简单,  在源代码中发现:  猜测需要用admin进行登陆,如果在注册模块用admin进行注册的话,会提示已被注册,那么可以肯定与admin有关。  在登陆页面用弱口令试试,发现不行。  那么......
  • Hadoop集群启停命令以及Web UI界面的相关介绍
    1、Hadoop集群的启停命令(我是将文件都配置好了,直接使用最方便的启停命令就能进行使用)start-all.shstop-all.sh2、HDFS集群的WebUI界面主要是通过命令行:ifconfig获取到本虚拟机的ip地址,然后输入:ip:9870进行访问即可3、YARN集群的WebUI界面可以使用以下命令访问:ht......
  • 基于 Webpack4 和 Vue 的可热插拔式微前端架构
    如果项目对你有所帮助,可以给个star Github地址什么是PuzzlePuzzle是基于Vue和Webpack4实现的一种项目结构;业务模块可以像拼图一样与架构模块组合,形成不同的系统,而这一切都是可以在生产环境热插拔的;这意味着你可以随时向你的系统添加新的功能模块,甚至改版整个系统,而不需......
  • WebDAV之π-Disk派盘+Joplin
    Joplin是一个优秀的开源笔记,可以组织到笔记本中的大量笔记和文本编辑器中进行复制,标记和修改。支持Evernote的笔记直接导入到Joplin应用程序中。Joplin还支持各种云服务同步,包括Dropbox、OneDrive、WebDAV或文件系统,方便对其进行检查、备份和移动。该应用程序可用于Windows,Linux,mac......
  • 百度WebUploader 大文件分片上传处理
    ​ 一、概述 所谓断点续传,其实只是指下载,也就是要从文件已经下载的地方开始继续下载。在以前版本的HTTP协议是不支持断点的,HTTP/1.1开始就支持了。一般断点下载时才用到Range和Content-Range实体头。HTTP协议本身不支持断点上传,需要自己实现。 二、Range  用于请求头......
  • C# WEB 服务
     1.WEB服务的添加   右键项目->添加->服务引用->   地址中输入你要添加的WEB服务地址,我这里是http://www.webxml.com.cn/WebServices/WeatherWebService.asmx   ->确定(命名默认)2.接口使用   在项目文件中找到默认命名的文件,在对应项目中using空间......
  • CTFer成长记录——CTF之Web专题·攻防世界—lottery
    一、题目链接https://adworld.xctf.org.cn/challenges/list?rwNmOdr=1691651594927二、解法步骤  打开网页,这是一个买彩票换flag的网站。题目附件提供了源码:  在网站上探索一番,发现买flag需要9990000R,获得资金的方式就通过buy功能买彩票。  那么我们随便输入一个数字,......
  • 雷池 Web 应用防火墙安装
    官方网站:https://waf-ce.chaitin.cn/GitHub托管地址:https://github.com/chaitin/safeline 【简介】一款足够简单、足够好用、足够强的免费WAF。基于业界领先的语义引擎检测技术,作为反向代理接入,保护网站不受黑客攻击。 【特点】 一、安装部署配置需求操作系......
  • apache/hop-web 2.5安装和简单入门
    一、使用Docker安装部署1、拉取镜像推荐使用下面的web版本dockerpullapache/hop:latestdockerpullapache/hop-web:latest2、部署a、简单部署(不使用用户名密码)dockerrun-p8080:8080apache/hop-web:latestb、使用用户名密码和相关数据库配置的部署docker文件......