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

news2024/11/17 21:27:19

一、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 time


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')


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.coloradmin.cn/o/1025475.html

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

相关文章

TypeError: The view function did not return a valid response

TypeError: The view function did not return a valid response._白振峰的博客-CSDN博客

小程序中如何查看会员的优惠券领取记录

在小程序中,我们可以通过如下方式来查看会员的优惠券领取记录。下面是具体的操作流程: 1. 找到指定的会员卡。在管理员后台->会员管理处,找到需要查看优惠券记录的会员卡。也支持对会员卡按卡号、手机号和等级进行搜索。 2. 查看会员卡详…

华为OD机考算法题:篮球比赛

目录 题目部分 解读与分析 代码实现 题目部分 题目篮球比赛难度难题目说明篮球(5V5)比赛中,每个球员拥有一个战斗力,每个队伍的所有球员战斗力之和为该队伍的总体战斗力。现有 10 个球员准备分为两队进行训练赛,教练希望 2 个队伍的战斗力…

深度学习——卷积神经网络

卷积神经网络 1 计算机视觉 (Computer Vision)2 边缘检测示例 (Edge Detection Example)3 更多边缘检测内容 (More Edge Detection Example)4 Padding5 卷积步长 (Strided Convolutions)6 三维卷积 (Convolutions Over Volumes)7 单层卷积网络 (One Layer of a Convolutional N…

从速度到兼容性:一起来看看腾讯文档双核引擎的全面优势

文章目录 前言功能测评打开编辑本地文件本地文件云存储转多人在线编辑便捷的文件分享 测评感受 前言 在刚结束的腾讯数字生态大会上,腾讯文档发布了独家自主研发的双核编辑引擎。根据会上介绍,该引擎采用了统一的 OOXML 底层存储格式,实现了…

echarts-可视化地图防重叠文本框

我在第一篇可视化地图中,有一些基础介绍,本篇文章就是多展示一些效果,大家可以按需获取。 先直接上效果图 这里的配置项有用到 1、通过geo展示多层地图,这样可以像上图所示,通过错位有了一些3D效果; 2、北…

golang实现远程控制主机

文章目录 ssh原理使用golang远程下发命令使用golang远程传输文件 ssh原理 说到ssh原理个人觉得解释最全的一张图是这张华为画的 Connection establishment 这一步就是建立tcp连接 version negotiation 这一步是ssh客户端(连接者)和被ssh服务端(连接者)进行协议的交换&#xf…

湖南长沙石雕石质文物三维扫描数字化雕刻3D打印复刻文化遗产-CASAIM中科广电

石质文物主要包括石雕、石塔和古建筑等,颇具代表性的雕刻动物作品有:龙、凤、狮子、麒麟、貔貅、金蟾等。石雕是我国文化遗产的重要组成,在书写灿烂文明中扮演着重要角色,记载了我国文化和历史的变迁。 随着现代艺术的发展&#…

vscode快捷键大全中英文

vscode快捷键大全中英文 源文件下载链接

700多心理测试性格测试大全ACCESS\EXCEL数据库

这是一个关于心理测试、性格测试的ACCESS数据库,这个测试有一个测试项目一个问题选择后就有结果,也有一个测试项目有N多题需做完N多题根据各题得分得出总结果,所以ACCESS数据表的结构设计的很灵活。 测试项目表:为整个ACCESS数据…

DDoS攻击和CC攻击

DDoS是(Distributed Denial of Service,分布式拒绝服务)攻击和CC(Challenge Collapsar,挑战黑洞) 攻击是两种常见且具有破坏性的攻击类型,它们可以对网络基础设施和在线业务造成重大损害。为了抵御这些攻击…

vscode编写前端提升效率的三个必不可缺的插件以及使用方法

直接官网下载这个软件就行,没什么操作的。 这里面有新建文件夹,你可以自己去建一个文件夹 然后点击那个小号,就可以新建一个文件,比如说demo01.html,⚠️后面的html是你需要自己手动输入的 第一个插件,就是这个她可以让…

Android 虚拟机

文章目录 Android 虚拟机Java虚拟机基于栈的虚拟机栈的执行流程 Dalvik虚拟机基于寄存器的虚拟机寄存器的执行流程Java虚拟机与Dalvik虚拟机区别 ART虚拟机Android 7.0的运行方式 Android 虚拟机 Java虚拟机 基于栈的虚拟机 每一个运行时的线程,都有一个独立的栈…

包装类型和基本类型的转换(自动装箱/自动拆箱)

①包装类型->基本类型 ②基本类型->包装类型 //第一种:直接创建对象Integer ynew Integer(20);//第二种:使用Integer类的静态方法valueOf()Integer zInteger.valueOf(30); JAVA对以上内容的简化: 自动装箱(基本类型->包…

嵌入式C语言知识复习和提高

文章目录 前言基础知识main函数防BUG注释(重要)关键字标识符命名(驼峰命名)常量类型变量printf1.输出不同类型数据2.输出不同宽度数据3.不同类型数据长度归类 scanf函数运算符sizeof(运算符,优先级2&#x…

Springboot ruoyi配置mysql备份定时任务

一、RuoYiConfig.class 新增获取备份路径方法 public static String getDataBaseBackUp() {return getProfile() "/dbBackUp";} 二、RyTask:新增备份数据库方法 mySqlDump方法:参数详见代码 package com.ruoyi.quartz.task;import cn.hut…

智慧工地4G+蓝牙+GPS/北斗RTK人员定位系统解决方案

工地是事故多发地,对工地人员进行定位管理非常有必要。传统工地管理手段存在局限性,往往难以高效地管理工地上的人员。随着科技的发展,工地人员定位管理系统逐渐普及。通过使用人员定位系统,工地管理者可以对工地上的人员进行全面…

对权限的理解和使用

目录 一:用户权限: ★su命令 ★sudo命令 二:文件权限 ★文件的类型权限 ★文件夹的权限的使用 ▲文件夹的可读权限: ▲文件夹的可写权限: ▲文件夹的可执行权限: ★权限的修改操作 ▲chmod命令 ★对于文件的…

C++:deque的概念以及stack和queue的模拟实现

文章目录 stack的模拟实现dequequeue的模拟实现 本篇主要总结的是stack和queue的模拟实现以及deque的原理 stack的模拟实现 和前面的模拟实现相同,首先要看官方实现的功能 这里引入了Container的概念,从字面意思来看,也就是说,在…

pdf转换成word,这里有几个不错的方法

pdf转换成word怎么转?大家都知道,在电脑进行各种文件格式转换中,PDF转换为Word文档的需求量应该是最大的。在我们的日常工作中,经常需要将PDF转换为Word格式。为什么要将pdf文件转换成word,相信大家也都应该知道的&…