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

相关文章

Linux搭建单机MySQL8.0.26版本的操作方法

《Linux搭建单机MySQL8.0.26版本的操作方法》:本文主要介绍Linux搭建单机MySQL8.0.26版本的操作方法,本文通过图文并茂的形式给大家讲解的非常详细,感兴趣的朋友一起看看吧... 目录概述环境信息数据库服务安装步骤下载前置依赖服务下载方式一:进入官网下载,并上传到宿主机中,适合离线环境

Python装饰器之类装饰器详解

《Python装饰器之类装饰器详解》本文将详细介绍Python中类装饰器的概念、使用方法以及应用场景,并通过一个综合详细的例子展示如何使用类装饰器,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. 引言2. 装饰器的基本概念2.1. 函数装饰器复习2.2 类装饰器的定义和使用3. 类装饰

Python中@classmethod和@staticmethod的区别

《Python中@classmethod和@staticmethod的区别》本文主要介绍了Python中@classmethod和@staticmethod的区别,文中通过示例代码介绍的非常详细,对大... 目录1.@classmethod2.@staticmethod3.例子1.@classmethod

Linux下MySQL8.0.26安装教程

《Linux下MySQL8.0.26安装教程》文章详细介绍了如何在Linux系统上安装和配置MySQL,包括下载、解压、安装依赖、启动服务、获取默认密码、设置密码、支持远程登录以及创建表,感兴趣的朋友... 目录1.找到官网下载位置1.访问mysql存档2.下载社区版3.百度网盘中2.linux安装配置1.

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