pytest中conftest的用法以及钩子基本使用

一、conftest是什么?

conftest是pytest进阶中的高级应用,最近正好用到这一块儿,研究之后,向大家分享该高级应用。

二、使用步骤

1.conftest代码块


以全局性使用driver为主,只启动一次浏览器:


@pytest.fixture(scope='session')  # 以此实现多个用例,只启动一次浏览器
def browser():
    global driver
    driver = None  # 需要给一个初始化的值
    '''定义全局driver参数'''
    browser_name = 'chrome'
    if driver is None:
        if browser_name == 'chrome':
            # driver = webdriver.Chrome(executable_path="../driver/chromedriver.exe")
            driver = webdriver.Chrome()
            driver.maximize_window()
        elif browser_name == 'firefox':
            driver = webdriver.Firefox()
        elif browser_name == 'ie':
            driver = webdriver.Ie()
        else:
            log.error('传入的浏览器名称有误')
    driver.implicitly_wait(10)
    log.debug(f"正在启动浏览器:{browser_name}")
    yield driver
    log.debug("正在关闭浏览器")
    time.sleep(5)
    driver.close()
    return driver

2.使用方法


在test_hao123中进行使用:

@allure.step(title="测试一个元素多种定位方式")
@allure.severity(allure.severity_level.BLOCKER)#CRITICAL,NORMAL,MINOR,TRIVIAL
@allure.issue("https://www.baidu.com")
def test_2(self, browser):allure.attach("描述","测试步骤002的描述...")self.driver = browserself.open_url("https://www.hao123.com/")self.driver.find_element(By.XPATH,'//*[@id="search"]/form/div[2]/input').send_keys("conftest")sleep(5)# self.hao123.run_test();

注意:

test_hao123方法中的传参browser要跟conftest中的方法保持一致,无需做其他配置,前提conftest所在的目录要有__init__文件
 

pytest在conftest文件中钩子的使用方法

@pytest.hookimpl(hookwrapper=True, tryfirst=True)
def pytest_runtest_makereport(item, call):# 获取钩子方法的调用结果out = yield# print('用例执行结果', out)    # 3. 从钩子方法的调用结果中获取测试报告report = out.get_result()if report.when == "call":print('测试报告:%s' % report)print('步骤:%s' % report.when)print('nodeid:%s' % report.nodeid)print('description:%s' % str(item.function.__doc__))print(('运行结果: %s' % report.outcome))log.info('nodeid:%s' % report.nodeid)log.info('运行结果: %s' % report.outcome)

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

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

相关文章

华为数通HCIA-数通网络基础

基础概念 通信:两个实体之间进行信息交流 数据通信:网络设备之间进行的通信 计算机网络:实现网络设备之间进行数据通信的媒介 园区网络(企业网络)/私网/内网:用于实现园区内部互通,并且需要部…

WAF/Web应用安全(拦截恶意非法请求)

Web 应用防火墙(Web Application Firewall, WAF)通过对 HTTP(S) 请求进行检测,识别并阻断 SQL 注入、跨站脚本攻击、跨站请求伪造等攻击,保护 Web 服务安全稳定。 Web 安全是所有互联网应用必须具备的功能&#xff0c…

Python实现抽象工厂模式

抽象工厂模式是一种创建型设计模式,用于创建一系列相关或依赖对象的家族,而无需指定具体类。在Python中,可以通过类和接口的组合来实现抽象工厂模式。 下面是一个简单的Python实现抽象工厂模式的示例: # 抽象产品接口 class Abs…

【前端知识】React 基础巩固(三十二)——Redux的三大原则、使用流程及实践

React 基础巩固(三十二)——Redux的三大原则 一、Redux的三大原则 单一数据源 整个应用程序的state被存储在一颗object tree 中,并且这个object tree 只存储在一个store中;Redux并没有强制让我们不能创建多个Store,但是那样做不利于数据维护…

OpenHarmony与HarmonyOS联系与区别

目录 1. 背景 2.OpenHarmony 3.HarmonyOS 4.鸿蒙生态 5.OpenHarmony与HarmonyOS的技术上实现区别 1.语言支持 2.SDK 的不同 3.运行调测方式不同 4.对APK的兼容性不同 5.包含关系 6.调试命令 6.何时选择OpenHarmony或是HarmonyOS? 1. 背景 开篇就说“关于…

【洛谷】P5715 【深基3.例8】三位数排序

【深基3.例8】三位数排序 题目描述 给出三个整数 a , b , c ( 0 ≤ a , b , c ≤ 100 ) a,b,c(0\le a,b,c \le 100) a,b,c(0≤a,b,c≤100),要求把这三位整数从小到大排序。 输入格式 输入三个整数 a , b , c a,b,c a,b,c,以空格隔开。 输出格式 …

RabbitMQ集群搭建

说明:集群,不管是Redis集群,还是MQ集群,都是为了提高系统的可用性,使系统不至于因为Redis、MQ宕机而崩溃。本文介绍RabbitMQ集群搭建,RabbitMQ集群分为以下三类: 普通集群 镜像集群 仲裁队列 …

C语言中指针(简略复习)

一、指针 1. 指针运算 设p为指针,T为类型,n为整型数字,则pn表示,指针从当前位置向后移动n个数据单位,而不是n个字节。 数据类型不同,移动的数据单位字节数也不同,实际上移动的字节数为n*sizeo…

3DVR全景旅游,最新数字化智慧文旅

导语: 随着科技的飞速发展,3DVR全景旅游正以其独特的特点和无限的优势,成为当今智慧文旅的领航者。穿戴上VR设备,只需一个轻轻的点击,你将被带入一个全新的数字世界,领略美景、探索奇迹。让我们一起深入了…

探索容器镜像安全管理之道

邓宇星,Rancher 中国软件架构师,7 年云原生领域经验,参与 Rancher 1.x 到 Rancher 2.x 版本迭代变化,目前负责 Rancher for openEuler(RFO)项目开发。 最近 Rancher v2.7.4 发布了,作为一个安全更新版本,也…

【Spring MVC】Spring MVC的功能使用和相关注解介绍

Spring MVC主要有三个功能: 连接获取参数输出数据 对于 Spring MVC 来说,掌握了以上 3 个功能就相当于掌握了Spring MVC。 1.连接 连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能…

基于YOLOv5的WiderFace人脸检测检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要:基于YOLOv5的WiderFace人脸检测系统可用于日常生活中检测与定位人脸目标,利用深度学习算法可实现图片、视频、摄像头等方式的人脸目标检测识别,另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型训练数据集&…

[SQL挖掘机] - 算术函数 - mod

介绍: 当谈到 SQL 中的 mod 函数时,它是一个用于计算两个数值相除后的余数的函数。“mod” 是 “modulo” 的缩写,它表示取模运算。 函数用法: mod 函数的用法如下: mod(dividend, divisor)其中,dividend 是被除数&#xff0c…

css终极方案PostCSS

一见如故 原理 所有的css框架都在一样的事,那就是由一个css生成一个新的css,那么postcss就来做了一个抽离: 1、将原有的css解析成抽象语法树 2、中间经过若干个插件 3、重新文本化,形成新的css postcss.config.js module.expor…

vb+ACCESS教师管理系统设计设计与实现

--------------前言-------------- 教师管理系统是一个企事业单位不可缺少的部分,它的内容对于企事业单位的决策者和管理者来说都至关重要,所以教师管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件信息,这种管理方式存在…

微信小程序值相同的数据,一个数据setDate修改后,另一个值相同的数据也会修改

在js中一个基础类型可以直接赋值,引用类型直接赋值会指向同一个值(原理是浅拷贝和深拷贝) 解决问题代码:JSON.parse(JSON.stringify(json)) ↓ let json {0: [false, false],1: [true, false] } this.setData({timeList: JSON.…

【C++】容器对象作为函数参数传递时,如何保证外部容器对象不被修改(以vector为例)

几种传参方式简单对比 传值 1.1 参数形式&#xff1a;void fun(vector<int> v); 1.2 函数调用&#xff1a;fun(v); 1.3 函数内使用&#xff1a;cout << v[1]; 1.4 是否可以改变函数外对象的值&#xff1a;否 1.5 是否会调用拷贝构造函数&#xff1a;是传指针 2.1 …

快速了解新一轮Moonbeam Grants申请提案

随着Moonbeam Grant第二期计划的发布&#xff0c;超过12个项目同时提交了生态Grant申请的提案。任何大于25万枚GLMR Grant的申请都将会要求项目在Moonbeam社区治理论坛上发布Grant提案&#xff0c;内容包含项目概览、申请金额、Grant使用方案以及背后的原因等等。 Grant的发放…

SpringSecurity web.ignoring()不起作用分析

文章目录 原因分析解决方法1. 在自己的过滤器中再次设置白名单 原因分析 例如&#xff1a; Overridepublic void configure(WebSecurity web) throws Exception {web.ignoring().antMatchers("/css/**");web.ignoring().antMatchers("/js/**");web.ignor…

【软件架构】企业架构4A定义

文章目录 前言战略、BA、DA、AA、TA五者的关系1、业务架构&#xff08;BA&#xff09;2、数据架构&#xff08;DA&#xff09;3、应用架构&#xff08;AA&#xff09;4、技术架构&#xff08;TA&#xff09;总结 前言 业务架构是跨系统的业务架构蓝图&#xff0c;应用架构、数…