【pytest】三、pytest之setup和teardown,及封装

news2024/9/23 17:32:46

一、引言:

1)setup的作用:用来实现执行前的一些初始化操作(如:数据准备、连接设备、打开APP/浏览器、创建日志对象、创建数据库连接、创建接口的请求对象等操作);

2)teardown的作用:用来实现执行用例后的一些操作(如:数据清理、关闭APP/浏览器、销毁日志对象、关闭数据库连接等操作)。

二、分类:

函数级:setup_function/teardown_function    在每个函数形式的用例前/后,都会执行的代码
方法级:setup_method/teardown_method     在类中方法形式的用例前/后,都会执行的代码
类级:setup_class/teardown_class   用于类中,在一个类中只调用一次,类的前/后,都会执行的代码
模块级:setup_module/teardown_module     用于当前模块,当前模块执行前/后,都会执行的代码
用例级:setup/teardown

1)用例级: setup/teardown

在每个用例前/后,都会执行的代码

 ----------与方法级:setup_method/teardown_method,产生的效果一样

import pytest

class TestLogin:

    def setup(self):
        print("在每个用例执行前,执行一次")

#    def setup_method(self):
#        print("在每个用例执行前,执行一次")

    def teardown(self):
        print("在每个用例执行后,执行一次")

    def test_tangseng(self):
        print("测试登录成功-唐僧")

    def test_sunwukong(self):
        print("测试登录成功-孙悟空")

    def test_zhubajie(self):
        print("测试登录成功-猪八戒")

    def test_shaheshang(self):
        print("测试登录成功-沙和尚")

2)函数级和方法级:

其实函数和方法的区别,以前我经常分不清楚:

函数长这样:def test_001():

        --不带self

        --调用的方式:通过“函数名()”的方式进行调用

        --分类:可以分为python的内置函数、匿名函数、递归函数、用户自定义函数

方法长这样:def test_001(self): 

        --带self

        --调用的方式:通过“对象.方法名”的方式进行调用

        --分类:普通方法、私有方法、属性方法、特殊方法(双下划线方法:__init__)、类方法、静态方法

        --在类中的是方法

 如果在类中,用函数级:setup_function/teardown_function,则执行案例时是不会被调用的。

  如果在类中,用方法级:setup_method/teardown_method,则执行案例时会被调用。

三、封装

        为了避免在每个py文件中,重复编写相同的代码(如setup和teardown进行初始化和结束的处理),让用例中的代码更加整洁清晰,我们可以将这些代码提取出来,放在公共文件夹中(比如:common文件夹)进行封装。

公共的工具包中代码如下:

class CommonUtil:
    def setup_class(self):
        print("在每个类执行前,执行一次")

    def teardown_class(self):
        print("在每个类执行后,执行一次")


    def setup(self):
        print("在每个用例执行前,执行一次")

    def teardown(self):
        print("在每个用例执行后,执行一次")

1、新建一个python文件夹:common

2、在该文件夹中,创建py文件:common_util,定义CommonUtil类,如上

3、在待使用的类中,去继承CommonUtil类即可:

import pytest
from common.common_util import CommonUtil

class TestLoginA(CommonUtil):



    def test_tangseng(self):
        print("0130类测试登录成功-唐僧")

    def test_sunwukong(self):
        print("0130测试登录成功-孙悟空")

    def test_zhubajie(self):
        print("0130测试登录成功-猪八戒")

    def test_shaheshang(self):
        print("0130测试登录成功-沙和尚")

运行结果图:

思考:

        封装之后,每个用例执行前后,都会执行对应的setup和teardown;但实际应用过程中,可能只有部分用例需要用到前后置,应该怎么处理呢?

        对应解决方法见:【pytest】之fixture()和conftest使用详解_福多多的福的博客-CSDN博客 

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

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

相关文章

C++学习/温习笔记:新型源码学编程(二)

写在前面 面向初学者撰写专栏,个人原创的学习C/C笔记(干货)编程练习所作源代码输出内容为中文,便于理解如有错误之处请各位读者指正请读者评论回复、参与投票,反馈给作者,我会获得持续更新笔记干货的动力。…

放弃内卷,创造新市场

在疫情,突然爆发的俄乌冲突,还有全球的物价上涨情况等社会问题逐渐变得尖锐的动荡中,让原本就不好的经济形势进入了寒冬期,各个行业也陆续进入了寒冬期,纷纷进入了内卷模式,尤其是对于跨境电商行业来说&…

linux 部署jmeter报错处理

一、linux 安装jdk Java Downloads | Oracle 二、 linux上传jmeter 2.1 上传jmeter jmeter 下载地址: Apache JMeter - Download Apache JMeter 注意: 我先在我本地调试脚本(mac环境),调试完成后,再在…

java基于ssm的饰品商城的设计与实现

管理员;管理员使用本系统涉到的功能主要有个人中心、用户管理、商品分类管理、商品信息管理、活动商品管理、知识普及管理、饰品圈、系统管理、订单管理等功能。 用户进入前台可以查看首页、商品信息、活动商品、知识普及、饰品圈、公告信息、个人中心、后台管理、购…

全国产!全志A40i+Logos FPGA核心板(4核ARM Cortex-A7)硬件说明

硬件资源 SOM-TLA40iF核心板板载ARM、FPGA、ROM、RAM、晶振、电源、LED等硬件资源,并通过B2B连接方式引出IO。核心板所有器件(包括B2B连接器)均采用国产工业级方案,国产化率100%。 图 1 核心板硬件框图

哪有什么互联网寒冬?献给java程序员的面试全攻略,修炼内功,强大自己才是王道!

最近很多人在讨论,学Java还有前途吗?转行Java有希望吗?Java还值得学吗?诸如此类的问题太多了,见怪不怪,不用担心太多,我们来仔细分析一下为什么会出现这种情况。 首先,互联网行业近几年确实很…

scrapy构造并发送请求

scrapy数据建模与请求 学习目标: 应用 在scrapy项目中进行建模应用 构造Request对象,并发送请求应用 利用meta参数在不同的解析函数中传递数据 1. 数据建模 通常在做项目的过程中,在items.py中进行数据建模 1.1 为什么建模 定义item即提前…

【Linux】操作系统(Operator System)

目录 一、操作系统是什么 1、操作系统概念 2、操作系统的定位 3、设计OS的目的 4、操作系统的重要性 二、 理解操作系统 三、系统调用 系统调用和库函数的关系 一、操作系统是什么 1、操作系统概念 任何计算机系统都包含一个基本的程序集合,称为操作系统…

【网络设备排障怎么破?这五个命令申请出战!】

1.网络排错常用诊断工具介绍 主流网络设备产品提供了一套完整的命令集,可以用于监控网络互联环境的工作状况和解决基本的网络故障。主要包括以下命令: Ping命令 Traceroute命令 Show命令 Clear命令 Debug命令 1.1 Ping命令 1.原理: “ping”…

vue+element-ui项目搭建记录

一. 安装vue(省略) 二. 新建vue项目并启动 1. 命令行执行新建项目命令: vue init webpack TestElemntUI3 //TestElemntUI3为项目名称执行结果发现有问题: 2. 需要安装一个全局加载项,执行命令: npm i…

ARM+DSP!全志T113-i+玄铁HiFi4开发板硬件说明书(1)

前 言 本文档主要介绍开发板硬件接口资源以及设计注意事项等内容,测试板卡为全志T113-i+玄铁HiFi4开发板。由于篇幅问题,本篇文章共分为上下两集,点击账户可查看更多内容详情,开发问题欢迎留言,感谢关注。 T113-i处理器的IO电平标准一般为1.8V和3.3V,上拉电源一般不超过…

DSTL与PA咨询公司助力英国国防部发展“量子+军事”领域

DSTL的量子实验室(图片来源:网络)如何充分利用国防和安全领域的资源并确保人员安全?快速准确的决策至关重要。人类虽然是决策过程的重要参与者,但是快节奏的决策过程对人类来说变得越来越复杂。国防科学技术实验室&…

18种可以提高接口性能的方案

之前工作中,遇到一个504超时问题。原因是因为接口耗时过长,超过nginx配置的10秒。然后 真枪实弹搞了一次接口性能优化,最后接口从11.3s降为170ms。本文将跟小伙伴们分享接口优化的一些通用方案。 1. 批量思想:批量操作数据库 优化…

分布式系统架构解决方案—Dubbo

文章目录什么是分布式系统?系统架构Dubbo简介RPC的概念dubbo节点角色dubbo节点调用关系Dubbo 安装管理端Dubbo-监控统计中心什么是分布式系统? “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统”分布式系统&…

第一次创业,注册什么类型的公司更好?

前言 几乎每一个打工者都有一颗当老板的心,大喊一声:"大丈夫生居天地间,岂能郁郁久居人下",于是一拍桌子就辞职创业,现实往往都是潦草收场,看下面一段统计数据: 中国小微企业平均存活周期4.13年&…

2023牛客寒假算法基础集训营4(10/13)

清楚姐姐学信息论数学&#xff0c;只需要求x的y次方和y的x次方那个大选哪个&#xff0c;除了2和3时是3多&#xff0c;其他情况都是数越小能代表的数越多AC代码&#xff1a;#include <bits/stdc.h> using namespace std; using LL long long; int main() {ios::sync_with…

7年老码农,平凡的2022

前言 嗨&#xff0c;大家好&#xff0c;我是希留。一个被迫致力于成为一名全栈开发的菜鸟。 2022年对于大多数人而言是难忘的一年&#xff0c;受疫情影响、经历行业寒冬。裁员、失业等情况总是笼罩着本就焦虑不安的生活。 而我的2022&#xff0c;用一个关键词就可以概括&…

超大功率远程应急广播系统(大功率扬声器的应用)

系统概述 1、接收控制系统框图 超大功率远程应急广播系统是针对应急广播研发的一套通信系统&#xff0c;其接收控制系统框图如图&#xff08;1&#xff09;所示&#xff1a; 2、发射系统框图 发射系统框图如图&#xff08;2&#xff09;所示。 3、接收控制系统功能 接收控制…

【Spring源码】自动注入·名称:autowireByName()详解

进入方法autowireByName()首先调用了unsatisfiedNonSimpleProperties()方法进行属性过滤unsatisfiedNonSimpleProperties()其中PropertyDescriptor是JavaBean通过存储器导出一个的一个属性&#xff0c;用于获取bw的所有属性描述对象&#xff0c;遍历获取到的属性描述对象&#…

快鲸智慧楼宇:为楼宇智慧化、物联化、可视化、数字化运营赋能

根据国际数据公司(IDC)发布的《全球半年度智慧城市支出指南》显示&#xff0c;2023年全球智慧城市支出预计将达到1894.6亿美元&#xff0c;其中中国市场规模将达到389.2亿美元。这意味着2023年&#xff0c;建设智慧城市是世界各地许多城市的发展战略之一。智慧楼宇作为智慧城市…