pytest 使用(二):前后置(固件,夹具)

Pytest框架实现一些前后置(固件,夹具)的处理,常用三种。

一、setup/teardown,setup_class/teardown_class

为什么需要这些功能?
比如:web自动化执行用例之前,请问需要打开浏览器吗?用例执行后需要关闭浏览器?

class TestMashang:#这个在所有的用例之前只执行一次def setup_class(self):print('在每个类执行前的初始化的工作:比如:创建日志对象,创建数据库的连接,创建接口的请求对象。')#在每个用例之前执行一次。def setup(self):print('\n在执行测试用例之前初始化的代码:打开浏览器,加载网页')def test_01_baili(self):print('\n测试百里')def test_02_xingyao(self):print('\n测试星瑶')def teardown(self):print('\n在执行测试用例之后的扫尾的代码:关闭浏览器')def teardown_class(self):print('在每个类执行后的扫尾的工作:比如:销毁日志对象,销毁数据库的连接,销毁接口的请求对象。')

注意:和Unittest不一样,全是小写。

二、使用@pytest.fixture()装饰器来实现部分用例的前后置。

装饰器
@pytest.fixture(scope=“”,params=“”,autouse=“”,ids=“”,name=“”)


(1)scope表示的是被@pytest.fixture标记的方法的作用域。function(默认),class,
module,package/session.
(2)params:参数化(支持,列表[],元祖(),字典列表[{},{},{}],字典元祖({},{},{})

import pytest@pytest.fixture(scope='function',params=['成龙','甄子丹','菜10'])
def my_fixture(request):print('前置')yieldprint('后置')return request.paramclass TestMashang1:def test_01_baili(self):print('\n测试百里')def test_02_xingyao(self,my_fixture):print('\n测试星瑶')print('‐‐‐‐‐‐‐‐‐‐‐‐‐‐'+str(my_fixture))

params=[‘成龙’,‘甄子丹’,‘菜10’] 这里params是参数名,有s。
request.param这里是属性名,是没有s的。

(3)autouse=True:自动使用,默认False
(4)ids:当使用params参数化时,给每一个值设置一个变量名。意义不大。
(5)name:给表示的是被@pytest.fixture标记的方法取一个别名。
当取了别名之后,那么原来的名称就用不了了。

三、通过conftest.py和@pytest.fixture()结合使用实现全局的前置应用

(比如:项目的全局登录,模块的全局处理)
1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改。
2.用处可以在不同的py文件中使用同一个fixture函数。
3.原则上conftest.py需要和运行的用例放到统一层。并且不需要做任何的imprt导入的操
作。
总结:
setup/teardown,setup_class/teardown_class 它是作用于所有用例或者所有的类
@pytest.fixtrue() 它的作用是既可以部分也可以全部前后置。
conftest.py和@pytest.fixtrue()结合使用,作用于全局的前后置。

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

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

相关文章

JavaScript

文章目录 1、JavaScript 的历史1.1 JavaScript 的历史1.2 JavaScript与ECMAScript的关系1.3 JavaScript与Java的关系1.4 JavaScript的版本 2、JS的引入方式3、ECMAScript基本语法3.1 变量3.2 注释3.2 语句分隔符 4、ECMAScript 基本数据类型4.1 数字类型4.2 字符串4.2.1 创建4.…

详解API接口如何安全的传输数据(内附商品详情API接口接入方式)

概述 API接口的安全传输是确保数据在API请求和响应之间的传输过程中不被截获、篡改或泄露的重要步骤。以下是一些用于增强API接口安全传输的常见技术和最佳实践: 使用HTTPS:使用HTTPS协议而不是HTTP,以确保数据在传输过程中的安全性。HTTPS使…

【计算机网络】运输层

概述运输层服务 运输层协议为运行在不同主机上的应用程序提供了逻辑通信功能。 运输层协议是在端系统中而不是在路由器中实现的。 运输层和网络层的关系: 网络层提供主机之间的逻辑通信,而运输层为**运行在不同主机上的应用程序(进程&#…

利用wasm实现读写本地项目的在线编辑器

利用wasm实现读写本地项目的在线编辑器 本篇内容是通过AI-ChatGPT问答和查阅相关文档得到的答案。 起因是看到在线Vscode和RemixIde都实现了在线读取用户电脑文件夹作为项目根目录,达成读取、创建、修改、删除该目录下所有文件、文件夹的功能。 而在浏览器中因为安…

python爬虫利用代理IP分析大数据

目录 前言 一、什么是代理IP? 二、为什么需要使用代理IP? 1.突破访问限制 2.提高访问速度 3.保护隐私 三、代理IP的分类 1.高匿代理IP 2.普通代理IP 3.透明代理IP 四、如何获取代理IP? 1.免费代理IP网站 2.付费代理IP服务商 五…

Java文件操作详解

CONTENTS 1. 文件和目录路径1.1 获取Path的片段1.2 获取Path信息1.3 添加或删除路径片段 2. 文件系统3. 查找文件4. 读写文件 1. 文件和目录路径 Path 对象代表的是一个文件或目录的路径,它是在不同的操作系统和文件系统之上的抽象。它的目的是,在构建路…

UTF-8-SIG 和 UTF-8 with BOM 有什么区别,该怎么选

前言 用 Sublime Text 打开一个文件,出现一个框框,提示要点选UTF-8-SIG(100%) 或 UTF-8 with BOM 详解 BOM (Byte Order Mark) 存在:UTF-8 with BOM 包含一个特殊的字节顺序标记 (BOM),它是一个非打印字符,通常用于…

前端基础之CSS

目录 一、CSS介绍 CSS语法 CSS注释 CSS的几种引入方式 二、CSS选择器 基本选择器 组合选择器 属性选择器 分组和嵌套选择器 伪类选择器 伪元素选择器 选择器的优先级 三、CSS属性相关 宽和高 字体属性 文字属性 背景属性 边框 border-radius display属性 …

常见接口测试面试题

1、按你的理解,软件接口是什么? 答: 就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。 2、HTTP和HTTPS协议区别? 答: https协议需要到CA(Certificate Authority,证书…

物联网整体框架有哪些层面?

物联网是当前非常火热的话题,各个行业对物联网的关注和投入力度也很大,一些互联网巨头都在紧锣密鼓的布局物联网产业,抢占市场先机。 物联网的整体构架大致可以分为以下四个层面: 1.感知识别层 感知层是物联网整体架构的基础&…

HTML标题、段落、文本格式化

HTML标题&#xff1a; 在HTML文档中&#xff0c;标题是很重要的。标题是通过<h1> - <h6标签进行定义的&#xff0c;<h1> 定义最大的标题&#xff1b;<h6>定义最小的标题。 <hr> 标签在HTML页面中用于创建水平线&#xff0c;hr元素可用于分隔内容。…

【Linux】Nginx安装使用负载均衡及动静分离(前后端项目部署),前端项目打包

一、Nginx导言 1、引言 Nginx 是一款高性能的 Web 服务器和反向代理服务器&#xff0c;也可以充当负载均衡器、HTTP 缓存和安全防护设备。它的特点是内存占用小、稳定性高、并发性强、易于扩展&#xff0c;因此在互联网领域得到了广泛的使用。 总结出以下三点: 负载均衡&#x…

CN考研真题知识点二轮归纳(4)

持续更新&#xff0c;上期目录&#xff1a; CN考研真题知识点二轮归纳&#xff08;4&#xff09;https://blog.csdn.net/jsl123x/article/details/134135134?spm1001.2014.3001.5501 1.既可以扩展网段又是二层的设备 网段一般指一个计算机网络中使用同一物理层设备&#xff…

小程序如何设置自动使用物流账号发货

小程序支持自动使用物流账号发货并生成运单号。商家需要与物流公司合作&#xff0c;获取物流账号&#xff0c;支持快递物流和同城外卖配送平台。具体方法请参考公众号之前发布的文章&#xff0c;例如可以搜索“快递账号”。 导入物流账号后&#xff0c;在小程序管理员后台->…

出海营销必看:如何避免邮件被识别为垃圾邮件

对于现在的商业环境来说&#xff0c;邮件通信已经成为企业与客户、合作伙伴以及员工之间沟通和交流的重要方式。然而&#xff0c;尽管企业发送的邮件通常都是正常的、合规的&#xff0c;有时候却会被系统错误地标记为营销邮件。这个情况给企业带来了很多困扰。 如果企业的邮件…

如何使用内网穿透远程访问Linux SVN服务?

文章目录 前言1. Ubuntu安装SVN服务2. 修改配置文件2.1 修改svnserve.conf文件2.2 修改passwd文件2.3 修改authz文件 3. 启动svn服务4. 内网穿透4.1 安装cpolar内网穿透4.2 创建隧道映射本地端口 5. 测试公网访问6. 配置固定公网TCP端口地址6.1 保留一个固定的公网TCP端口地址6…

docker fixuid

docker fixuid 一、fixuid是什么二、使用场景三、问题dockerfiledocker run 一、fixuid是什么 fixuid是用go语言编写的&#xff0c;当容器起来后可以修改容器中非root用户的UID/GID和文件权限。 项目地址&#xff1a;https://github.com/boxboat/fixuid 二、使用场景 当容器…

Python嵌入式数据库 / 轻量级数据库 / 小型数据库介绍(SQLite、Pandas DataFrame、TinyDB)(python数据库)

文章目录 Python嵌入式数据库/轻量级数据库介绍什么是嵌入式数据库/轻量级数据库&#xff1f;SQLitePandasTinyDB总结 Python嵌入式数据库/轻量级数据库介绍 在构建应用程序时&#xff0c;数据存储是必不可少的一部分。传统的方式是使用如MySQL、PostgreSQL这样的重量级数据库…

使用vue3+vite+elctron构建小项目介绍Electron进程间通信

进程间通信 (IPC) 是在 Electron 中构建功能丰富的桌面应用程序的关键部分之一。 由于主进程和渲染器进程在 Electron 的进程模型具有不同的职责&#xff0c;因此 IPC 是执行许多常见任务的唯一方法&#xff0c;例如从 UI 调用原生 API 或从原生菜单触发 Web 内容的更改。 在 …

[题] 查找最大元素 #字符输入

相关笔记汇总&#xff1a;[笔记] 字符串输入 #字符输入 题目 题目&#xff1a;1381 查找最大元素 对于输入的每个字符串&#xff0c;查找其中的最大字母&#xff08;ASCII码最大&#xff09;&#xff0c;在该字母后面插入字符串“(max)”。 输入 输入数据包括多个测试实例&…