pytest框架前后置设置,以及pytest默认规则

一、pytest框架的默认规则

1、模块名默认必须以test开头或者以test结尾
2、测试类必须以Test开头,并且不能有__init__方法
3、测试方法默认必须以test开头
当然以后的一些默认规则除测试类不能使用__init__方法外其余的都是可配置的,当然一般情况下我们也不会去修改这些默认配置。

二、使用setup 与teardown等方式实现用例的前后置

1.1、setup与teardown

此为函数级别实现前后置的方法,在每个测试用例运行前后都会调用前后置的方法。

class TestLogin:def setup(self):print('用例开始时执行')def teardown(self):print('用例结束时执行------>\n')def test_01_hujian(self):print('运行用例1')def test_02_hujian(self):print('运行用例2')if __name__ == '__main__':pytest.main(['-vs', 'test_login.py'])

运行结果:可以看到在运行每条用例的前后都会调用前后方法
在这里插入图片描述

1.2、setup_class与 teardown_class

此为类级别的前后置方法,意思就是每个类运行前后才会运行一次该方法。

class TestLogin:def setup_class(self):print('用例开始时执行')def teardown_class(self):print('用例结束时执行------>\n')def test_01_hujian(self):print('运行用例1')def test_02_hujian(self):print('运行用例2')

运行结果:可以看到结果,在该类运行前后才会执行前后置方法。
在这里插入图片描述

2.3、setup_module、teardown_module

模块级别前后置方法,意思就是在一个python文件中可以存在多个类,各个类中存在各个测试用例,使用该前后置方法只会在类前后调用一次。值得注意的是该方法只能单独存在,不能写个某个类中哦。

def setup_module():print('用例开始时执行')def teardown_module():print('用例结束时执行------>\n')class TestLogin_01:def test_01_hujian(self):print('运行用例1')def test_02_hujian(self):print('运行用例2')class TestLogin_02:def test_03_hujian(self):print('运行用例3')def test_04_hujian(self):print('运行用例4')

运行结果:
在这里插入图片描述
掌握上面三种基本方法基本就够了,不过今天的重点不是讲setup 与teardown,在pytest中一般使用fixture来实现前后置,这也是pytest框架的核心所在。

三、使用fixture来实现前后置功能

3.1、使用fixture的默认规则以及使用方法

1、fixture要放在conftest.py文件中,文件名是不可更改的。
2、在不同的用例py文件中可以使用同一个fixture文件,但是最后跟对应py文件在同一层级目录中。
3、在使用fixture时不需要任何import操作。

3.2、基本参数说明

我们在学会fixture参数使用后可以说基本就会使用fuxture啦。

@pytest.fixture(scope='', params='', autouse='', ids='', name='')
def myfuxture():   print('用例前后置的方式')

**1、scope:**表示是被pytest.fuxture标记的方式的作用域,function(函数)(默认)、class、module、package、session
params:参数化

**2、autouse:**autouse=True:自动执行,默认为FALSE

**3、ids:**当使用params参数化时,给每个值设置一个变量名,意义不大

**4、name:**给表示的是@pytest.fixture标记的方法取一个别名

3.3、参数的运用

在讲参数如何运行前我们先看一下如何调用fuxture吧。

# 我们在测试用例目录创建conftest.py文件,内容如下。
import pytest@pytest.fixture()
def myfuxture():print('用例前后置的方式')

在用例文件调用它

# 我们直接在测试用例方法里调用myfuxture即可,因为我们没有加任何参数,所以上面提到过scope默认等于function,它是函数级别的,我们看下打印结果,只会在test_01_hujian用例前运行前置。
class TestLogin_01:def test_01_hujian(self,myfuxture):print('运行用例1')def test_02_hujian(self):print('运行用例2')

在这里插入图片描述

3.3.1、autouse:自动执行

刚看到这个参数注释的时候肯定很多小伙伴都一脸懵逼,什么是自动执行。上面我们看到在调用fuxture时需要在函数里引用,当我们加上参数autouse='Ture’时则不需要引用fuxture方法名,直接所有用例都会调用fuxture是不是很好用。

import pytest@pytest.fixture(autouse=True)
def myfuxture():print('用例前后置的方式')
class TestLogin_01:def test_01_hujian(self):print('运行用例1')def test_02_hujian(self):print('运行用例2')

查看结果:因为没有加scope参数所以它是函数级别的,在两个用例执行前都会调用fuxture方法。
在这里插入图片描述

3.3.2、scope标记作用域

当不加这个参数时默认scope=function,上面以及演示。
当scop=class

@pytest.fixture(autouse=True, scope='class')
def myfuxture():print('用例前后置的方式')

打印结果:只会在所有方法开始前后执行class方法。
在这里插入图片描述
scop=module,当一个py文件中存在多个类时,会在第一个类执行前置,最后一个类执行后置。

import pytest@pytest.fixture(autouse=True, scope='module')
def myfuxture():print('用例前后置的方式')
import pytest
import timeclass TestLogin_01:def test_01_hujian(self):print('运行用例1')def test_02_hujian(self):print('运行用例2')class TestLogin_02:def test_03_hujian(self):print('运行用例3')def test_04_hujian(self):print('运行用例4')class TestLogin_03:def test_01_hujian(self):print('运行用例5')def test_02_hujian(self):print('运行用例6')class TestLogin_04:def test_03_hujian(self):print('运行用例7')def test_04_hujian(self):print('运行用例8')if __name__ == '__main__':pytest.main(['-vs'])

执行结果:
在这里插入图片描述
我们主要就使用这个三个参数即可,后面不多做介绍。
fuxture的参数化个人感觉不是很好用,这里就不多做介绍了,另外跟参数化涉及到的参数还有重命名参数这里不做介绍啦。

3.4、fuxture实现后置功能

前面演示的例子一直都只展示了前置功能,那后置如何实现呢。
我们用yield来实现。至于yield这里就不多做介绍了,博主有单独的文档专门介绍。

@pytest.fixture(autouse=True)
def myfuxture():print('用例前置的方式')yield print('后置方法')

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【算法思想】排序

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

【二叉树魔法:链式结构与递归的纠缠】

本章重点 二叉树的链式存储二叉树链式结构的实现二叉树的遍历二叉树的节点个数以及高度二叉树的创建和销毁二叉树的优先遍历和广度优先遍历二叉树基础oj练习 1.二叉树的链式存储 二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑…

Redis集群架构搭建——主从、哨兵、集群

上一篇文章Ubuntu上通过源码方式安装Redis已经介绍了如何安装redis,在这篇文章中,将会教大家搭建Redis的几种高可用的架构:主从架构、哨兵集群、Cluster集群。 本篇文章使用的redis版本为6.2.13,不同版本的配置可能有略微的区别&a…

如何将内网ip映射到外网?快解析内网穿透

关于内网ip映射到外网的问题,就是网络地址转换,私网借公网。要实现这个,看起来说得不错,实际上是有前提条件的。要实现内网ip映射到外网,首先要有一个固定的公网IP,可以从运营商那里得到。当你得到公网IP后…

比特币上的可验证延迟函数

可验证延迟函数 (VDF) 是一种需要大量 顺序计算 来评估但可以快速验证的函数。我们首次在比特币上实现了它。VDF 作为密码学技术可用于构建大量新应用程序,例如公共随机信标、计算时间戳和数据复制证明。 VDF 场景 链上随机信标 在区块链中很难实现随机性&#xf…

李航老师《统计学习方法》第2章阅读笔记

感知机(perceptron)时二类分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取1和-1二值。感知机对应于输入空间(特征空间)中将实例划分为正负两类的分离超平面 想象一下在一个平面…

人工智能机器学习-飞桨神经网络与深度学习

飞桨神经网络与深度学习-机器学习 目录 飞桨神经网络与深度学习-机器学习 1.机器学习概述 2.机器学习实践五要素 2.1.数据 2.2.模型 2.3.学习准则 2.4.优化算法 2.5.评估标准 3.实现简单的线性回归模型 3.1.数据集构建 3.2.模型构建 3.3.损失函数 3.4.模型优化 3…

怎么实现一个登录时需要输入验证码的功能

今天给项目换了一个登录页面,而这个登录页面设计了验证码,于是想着把这个验证码功能实现一下吧。 这篇文章就如何实现登录时的验证码的验证功能结合代码进行详细地介绍,以及介绍功能实现的思路。 目录 页面效果 实现思路 前端页面代码 lo…

conda常用指令

常用conda指令 查看当前有哪些环境,有base环境 conda env list 创建环境 # conda create -n 你的环境名 python版本号 # 创建python3.10,名为env虚拟环境 conda create -n env python3.10 激活环境 conda activate env

SpringCloud Alibaba - Sentinel篇

一、Sentinel快速入门 Sentinel官网地址:https://sentinelguard.io/zh-cn/index.html Sentinel项目地址:https://github.com/alibaba/Sentinel Sentinel是阿里巴巴开源的一款微服务流量治理组件,主要以流量为切入点,从流量限流、熔…

Linux MyFile

在之前,我们应该都多少接触过了C语言的文件管理,fopen,fclose,fputs....等函数的用法,也分析了系统层面上C语言是如何实现文件管理的。 回顾 上一个文章,我们讲解了十分重要的知识,在文件被打…

成集云 | 用友NC集成聚水潭ERP(用友NC主管供应链)| 解决方案

源系统成集云目标系统 方案介绍 用友NC是用友NC产品的全新系列,是面向集团企业的世界级高端管理软件。它以“全球化集团管控、行业化解决方案、全程化电子商务、平台化应用集成”的管理业务理念而设计,采用J2EE架构和先进开放的集团级开发平台…

平板用的触控笔什么牌子好?性价比高的触控笔推荐

随着平板电脑的普及,越来越多用户为了方便都选择了电容笔,电容笔已经完全代替了我们的手指,并且使我们的书写速度得到了极大的提升。然而,因为其的独特的重力压感功能与芯片技术,导致了原装笔的售价一直居高不下&#…

JavaScript - canvas - 放大镜

效果 示例 项目结构&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>放大镜</title><style type"text/css">div {width: 200px;height: 200px;display: inline-bl…

2023-09-20 Android CheckBox 让文字显示在选择框的左边

一、CheckBox 让文字在选择框的左边 &#xff0c;在布局文件里面添加下面一行就可以。 android:layoutDirection"rtl" 即可实现 android:paddingStart"10dp" 设置框文间的间距 二、使用的是left to right <attr name"layoutDirection">&…

RGB格式

Qt视频播放器实现&#xff08;目录&#xff09; RGB的使用场景 目前&#xff0c;数字信号源&#xff08;直播现场的数字相机采集的原始画面&#xff09;和显示设备&#xff08;手机屏幕、笔记本屏幕、个人电脑显示器屏幕&#xff09;使用的基本上都是RGB格式。 三原色 RGB是…

网络协议层次模型

OSI 七层模型 在 OSI 网络分层模型中&#xff0c;每个分层都接收由它下一层所提供的特定服务&#xff0c;并且负责为自己的上一层提供特定的服务。上下层之间进行交互时所遵循的约定叫做接口 &#xff1b;同一层之间的交互所遵循的约定叫做协议&#xff0c; 下图是 OSI 七层…

2023华为杯研究生数学建模竞赛CDEF题思路+模型代码

全程更新华为杯研赛CDEF题思路模型及代码&#xff0c;大家查看文末名片获取 华为杯C题思路分析 问题一 在每个评审阶段&#xff0c;作品通常都是随机分发的&#xff0c;每份作品需要多位评委独立评审。为了增加不同评审专家所给成绩之间的可比性&#xff0c;不同专家评审的作…

SpringBoot轻松实现项目集成Knife4j接口文档

Knife4j 介绍 Knife4j 官网 Knife4j是一款基于Swagger生成API文档的增强工具&#xff0c;它简化了开发者构建和管理RESTful API文档的过程。通过自动扫描项目中的接口信息&#xff0c;Knife4j能够生成详细、易读的API文档&#xff0c;无需手动编写和维护。它提供交互式的接口调…

CSP-J/S 2023第一轮认证晋级分数线有些爆冷,超出想象

昨天广东、江西、内蒙古、河北、江苏、吉林、四川相继公布了第一轮认证成绩和晋级分数线。 爆冷 说实在话&#xff0c;看到这个分数线&#xff0c;我有些意外。 省份 CSP-J CSP-S 江西 55 29 内蒙古 30 20 河北 48 20 江苏 72.5 52.5 吉林 52 33 四川 67 55 就拿我们大河北来…