26-unittest之装饰器(@classmethod)

2024-06-06 19:44
文章标签 26 装饰 classmethod unittest

本文主要是介绍26-unittest之装饰器(@classmethod),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        unittest中的setUp可以在每个测试方法运行前执行,有效的减少了代码量。但有个弊端,比如打开浏览器操作,执行每个测试方法前都要重新打开一次,这样就会浪费很多时间。

        是否可以只打开一次浏览器,执行完所有的测试方法后再关闭浏览器呢?这里就需要用到装饰器(@classmethod)来解决了。

一、装饰器(@classmethod)

1)setUp与setUpClass的区别

  • setup(self):每个测试方法运行前都会运行一次。
  • teardown(self):每个测试方法运行完之后都会执行一次。
  • setUpClass(cls):与装饰器@classmethod 一起使用,在所有测试方法运行前运行,且只运行一次。
  • tearDownClass(cls):与装饰器@classmethod 一起使用,在所有测试方法运行完之后运行,且只运行一次

2)在类中的方法上加上@classmethod,用来表示该方法是类方法。

二、执行顺序

import unittestclass Demo(unittest.TestCase):def setUp(self):print("setUp!")def tearDown(self):print("tearDown!")@classmethoddef setUpClass(cls):print("setUpClass!")@classmethoddef tearDownClass(cls):print("tearDownClass!")def test01(self):print("执行测试用例01")def test03(self):print("执行测试用例03")def test02(self):print("执行测试用例02")def addtest(self):print("add方法")if __name__ == "__main__":unittest.main()

        从上述执行结果可以看出,setUpClass和tearDownClass只执行了一次。

三、案例演示

        以打开百度搜索页为例,判断title是否完全等于期望结果。

from selenium import webdriver
import unittest
import timeclass Demo(unittest.TestCase):@classmethoddef setUpClass(cls):cls.driver = webdriver.Chrome()cls.driver.get('https://www.baidu.com')time.sleep(3)@classmethoddef tearDownClass(cls):time.sleep(1)cls.driver.quit()def test01(self):title = self.driver.titleself.assertEqual(title, '百度一下')def test02(self):title = self.driver.titleself.assertEqual(title, '百度一下,你就知道')if __name__ == '__main__':unittest.main()

这篇关于26-unittest之装饰器(@classmethod)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037054

相关文章

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

python+selenium2学习笔记unittest-05测试用例实例

看一下非常简单的目录结构 test_baidu from selenium import webdriverimport unittestimport timeclass MyTest(unittest.TestCase):def setUp(self):self.driver = webdriver.Firefox()self.driver.maximize_window()self

python+selenium2学习笔记unittest-04装饰器skip用法

在运行测试用例时,有时需跳过或判断用例时,可以用装饰器来实现 主要的几个方法就是下面的这几种 import unittestclass test(unittest.TestCase):def setUp(self):pass@unittest.skip('跳过')def test_01(self):print("直接跳过")@unittest.skipIf(3>2,'当条件为TRUE跳过')

python+selenium2学习笔记unittest-03断言

断言的方法网上归纳的很多主要有以下这些 断言语法解释assertEqual(a, b) 判断a==bassertNotEqual(a, b)判断a!=bassertTrue(x)bool(x) is TrueassertFalse(x)bool(x) is FalseassertIs(a, b)a is bassertIsNot(a, b) a is not bassertIsNone(x) x

python内置装饰器@staticmethod,@classmethod

2.@staticmethod,@classmethod 有了@property装饰器的了解,这两个装饰器的原理是差不多的。@staticmethod返回的是一个staticmethod类对象,而@classmethod返回的是一个classmethod类对象。他们都是调用的是各自的__init__()构造函数。 一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法。 而使用@stat

Python中的装饰器及其应用场景

Python中的装饰器(Decorators)是一个非常强大且优雅的特性,它允许你在不修改原有函数或类定义的情况下,给函数或类增加新的功能。装饰器本质上是一个函数,它接收一个函数(或类)作为参数,并返回一个新的函数(或类),这个新函数(或类)会包含原函数(或类)的所有功能,并在其基础上增加额外的功能。装饰器的这种特性使得代码的重用性、可读性和可维护性都得到了极大的提升。 一、装饰器的基本概念

七、装饰器模式

装饰器模式(Decorator Pattern)是一种结构型设计模式,允许在不改变对象自身的情况下,动态地向对象添加新功能。它通过将功能附加到对象的方式来增强其行为,提供了一种灵活的替代方案来使用子类扩展功能。 主要组成部分: 抽象构件(Component): 定义一个接口或抽象类,声明了要装饰的对象的基本功能。 具体构件(ConcreteComponent): 实现抽象构件的具体类,是

每日一题~cf 970 div3 (A思维,B小模拟,C二分,D排列数建图成环,E 26个字母暴力+前缀和,F 逆元,G 数论gcd )

A 题意: 有 a 个1 ,b 个2.问是否能将这些数划分为两个数值相等的集合。 输出 YES 或者 NO —————— 问题等价于 将数组 分成两个数值相同的数组。所以sum 应该是偶数。也就是说 1 的个数是偶数。在i1的个数是偶数的情况下,将 2 分成两份,如果2 的个数是偶数,OK。如果是奇数那么需要1来补齐,如果1 的个数大于等于2那么可以补齐。(1 的个数是偶数,需要2个1来补齐,剩下

java设计模式day03--(结构型模式:代理模式、适配器模式、装饰者模式、桥接模式、外观模式、组合模式、享元模式)

5,结构型模式 结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。 由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: 代理模式 适配器模式 装饰者模式 桥接模式 外观模式 组合模式

26 页高清大数据开发代码速查表,提升效率必备!【可下载】

各大互联网公司高价抢夺数据人才,为谋求长期发展、获得高薪,很多人转行到了大数据领域。这条路人才虽缺,但要成为优秀大数据工程师并不轻松:别的不说,光学习新技术,巩固旧知识,就需要耗费大量时间精力,实属不易。 为帮助大家提高学习效率,方便日后查找和使用,这里整理了一份大数据开发代码速查表资料,内容包括 Spark、Hadoop 及 Hive 等大数据开发主要知识点。 由于篇幅原因,下面只展示了速查表