首页 > 其他分享 >26-unittest之装饰器(@classmethod)

26-unittest之装饰器(@classmethod)

时间:2024-06-06 18:31:58浏览次数:15  
标签:__ 26 classmethod unittest print self def cls

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

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

一、装饰器(@classmethod)

1)setUp与setUpClass的区别

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

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

二、执行顺序

import unittest

class Demo(unittest.TestCase):
    def setUp(self):
        print("setUp!")

    def tearDown(self):
        print("tearDown!")

    @classmethod
    def setUpClass(cls):
        print("setUpClass!")

    @classmethod
    def 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 time

class Demo(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.driver.get('https://www.baidu.com')
        time.sleep(3)

    @classmethod
    def tearDownClass(cls):
        time.sleep(1)
        cls.driver.quit()

    def test01(self):
        title = self.driver.title
        self.assertEqual(title, '百度一下')

    def test02(self):
        title = self.driver.title
        self.assertEqual(title, '百度一下,你就知道')

if __name__ == '__main__':
    unittest.main()

标签:__,26,classmethod,unittest,print,self,def,cls
From: https://blog.csdn.net/zhangzhan0813/article/details/139479327

相关文章

  • 25-unittest执行顺序
            在使用unittest框架时,各个测试方法的执行顺序是怎样的,本篇通过简单案例讲解unittest执行顺序。一、定义测试类importunittestclassDemo(unittest.TestCase):defsetUp(self):print("start!")deftearDown(self):print("end......
  • 24-unittest简介
    一、unittest简介        unittest是Python中常用的单元测试框架,与Java中的Junit单元测试框架类似。二、示例程序1)导入unittest模块importunittest2)使用help()函数查看源码中的示例程序help(unittest)Simpleusage:importunittestclassIntegerAr......
  • OM6626国产BLE5.3高性能低功耗蓝牙SoC芯片
    OM6626简介OM6626是功能强大、性能稳定、超低功耗的国产蓝牙SoC芯片,适用于各种低功耗蓝牙和专有的2.4GHz应用场景。OM6626还集成了电源管理单元(PMU),可提供高效电源管理。可实现从小体积医疗监测到低功耗智能穿戴等健康监测设备,从SmartTag(物品追踪器)到高性能电脑键鼠等生活便利......
  • CSP历年复赛题-P2672 [NOIP2015 普及组] 推销员
    原题链接:https://www.luogu.com.cn/problem/P2672题意解读:N家住户,每家住户与出入口距离是Si米,推销员每走1米疲劳值+1,向第i家住户推销疲劳值+Ai,推销员推销完原路返回出口,计算在向不同数量X的住户推销时,能达到的最大疲劳值。解题思路:本题是一种贪心选择问题,需要思考出可能的最优......
  • 疯狂的麦克斯:狂暴女神迅雷BT下载[百度云AVI/1.26G]高清版[HD720p国语中字
    《疯狂的麦克斯:狂暴女神》是由乔治·米勒执导,汤姆·哈迪和查理兹·塞隆主演。这部电影是《疯狂的麦克斯》系列的第四部作品,取材于1980年代的系列电影,以麦克斯和女战士伊梅拉的故事为主线,将观众带入一个被暴力和毁灭统治的废土世界。 影片以一个后末日时代的世界为背景......
  • 报错 urllib3 (1.26.7) or chardet (5.2.0)/charset_normalizer (2.0.8) doesn‘t mat
    报错RequestsDependencyWarning:urllib3(1.26.7)orchardet(5.2.0)/charset_normalizer(2.0.8)doesn'tmatchasupportedversion!warnings.warn("urllib3({})orchardet({})/charset_normalizer({})doesn'tmatchasupported"这个警告信息Req......
  • BUUCTF 23~26 wp
    23主动防御首先拼接三段数据,然后与i异或,得到提示然后连续十次base64编码,提示“found”实际上并没有找到flag,而是一个网址回到View-A视图,发现一个交叉引用跟进发现关键字符‘f’,‘g’,逆推出v1,异或得出flag24Transform将输入的flag放进Str,长度为33,如果414040的数据和St......
  • Day15 | 102. 二叉树的层序遍历 、226.翻转二叉树 101. 对称二叉树
    102.二叉树的层序遍历看完本篇可以一口气刷十道题,试一试,层序遍历并不难,大家可以很快刷了十道题。题目链接/文章讲解/视频讲解:https://programmercarl.com/0102.二叉树的层序遍历.html#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val=0......
  • ESP8266 01sWiFi模块保姆级教程 烧录和联网,连接华为云
    前言写在前面。这个esp01s联网真的是折磨人啊,浪费了我三四天的时间,网上各种教程叫天天不灵,叫地地不灵,所以才有了这篇教程,致力于帮助像我一样的小白少踩坑,我可以说是把能踩的坑都塌了一遍。烧录部分首先强烈建议小白玩家不要用网上任何一种接线方式和手动上电的方式(这里真的......
  • CSP历年复赛题-P2671 [NOIP2015 普及组] 求和
    原题链接:https://www.luogu.com.cn/problem/P2671题意解读:找到所有符合条件的三元组,累加三元组的分数,结果对10007取模。解题思路:仔细读题,并分析数据规模,1~4个数据点可以通过O(n^2)复杂度解决,也就是枚举法。1、枚举法要求x<y<z,y−x=z−y,移项可得x+z=2*y,并且c......