• Python + selenium + unittest装饰器 @classmethod


    前言

    前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间。

    于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了。

    一、装饰器

    1.用setUp与setUpClass区别

    setup():每个测试case运行前运行
    teardown():每个测试case运行完后执行
    setUpClass():必须使用@classmethod 装饰器,所有case运行前只运行一次
    tearDownClass():必须使用@classmethod装饰器,所有case运行完后只运行一次

    2.@是修饰符,classmethod是python里的类方法

    二、执行顺序

    1.用类方法写几个简单case,

    # coding:utf-8
    import unittest
    import time
    class Test(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            print "start!"
       
    
        @classmethod
        def tearDownClass(cls):
            time.sleep(1)
            print "end!"
    
        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()

    2.从执行结果可以看出,前置和后置在执行用例前只执行了一次。

    start!
    执行测试用例01
    执行测试用例02
    执行测试用例03
    ...end!

    ----------------------------------------------------------------------
    Ran 3 tests in 1.001s

     3.名词解释

    Python类里会出现这三个单词,self和cls都可以用别的单词代替,类的方法有三种,

    一是通过def定义的 普通的一般的,需要至少传递一个参数,一般用self,这样的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问;

    二是在def前面加上@classmethod,这种类方法的一个特点就是可以通过类名去调用,但是也必须传递一个参数,一般用cls表示class,表示可以通过类直接调用;

    三是在def前面加上@staticmethod,这种类方法是静态的类方法,类似于c++的静态函数,他的一个特点是参数可以为空,同样支持类名和对象两种调用方式;

     
  • 相关阅读:
    梦断代码阅读笔记一
    进度一
    LOJ#6031. 「雅礼集训 2017 Day1」字符串
    cf700E. Cool Slogans
    BZOJ1014: [JSOI2008]火星人prefix
    BZOJ2716: [Violet 3]天使玩偶
    cf1080F. Katya and Segments Sets
    BZOJ1354: [Baltic2005]Bus Trip
    灭绝树题集
    How Many Substrings?
  • 原文地址:https://www.cnblogs.com/Skyyj/p/7275827.html
Copyright © 2020-2023  润新知