• Python 单元测试 之setUP() 和 tearDown()


    setUp:表示前置条件,它在每一个用例执行之前必须会执行一次 

    setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。

    tearDown:表示释放资源,它在每次用例执行完之后会执行一次

    tearDown可以理解为我们测试完毕后,需要关闭浏览器。

    以下示例演示setUp和tearDown的执行顺序:

    #coding:utf-8
    import unittest
    class Xseq(unittest.TestCase):
    def setUp(self):
    print "前置测试条件"
    def tearDown(self):
    print "结束测试条件"
    def testadd(self):
    print '1+1=',1+1
    def testsub2(self):
    print '3-2=',3-2
    def testsub1(self):
    print '3-3=',3-3
    def mul(self):
    print '3*1',3*1
    if __name__=="__main__":
    unittest.main()
    运行结果为:

    由此可看到运行的顺序:

    1. 每次执行函数方法时,必须先执行一次setUp()函数,执行完一个函数方法后,必须再执行一次tearDown()函数

    2. 执行函数的时候有序号时,例如testxx1,testxx2 会根据序号来进行执行

    3. 当函数方法不是以test开头是,不执行该方法。

    若我想要改变setUp()在所有用例执行之前只执行一次,和tearDown()函数在所有用例执行之后只执行一次的话

    1. 需要使用python中的@classmethod内置装饰器

    2. 需要把函数名改为setUpClass(cls) / tearDownClass(cls)

    以下为示例:

    #coding:utf-8
    import unittest
    class Xseq(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
    print "前置测试条件"
    @classmethod
    def tearDownClass(cls):
    print "结束测试条件"
    def testadd(self):
    print '1+1=',1+1
    def testsub2(self):
    print '3-2=',3-2
    def testsub1(self):
    print '3-3=',3-3
    def mul(self):
    print '3*1',3*1
    if __name__=="__main__":
    unittest.main()
    运行结果为:

    尝试些一个百度搜索的单元测试:该文档创建命名为baidu_search.py

    #coding:utf-8
    from selenium import webdriver
    import unittest
    from time import sleep
    class Baidu_search(unittest.TestCase):
    def setUp(self):
    self.bro=webdriver.Firefox()
    self.bro.maximize_window()
    self.bro.get("https://www.baidu.com")
    sleep(1)
    def tearDown(self):
    sleep(1)
    self.bro.quit()
    def test_search2(self):
    self.bro.find_element_by_id("kw").send_keys(u"第二次单元测试")
    self.bro.find_element_by_id("su").click()
    sleep(1)

    def test_search1(self):
    self.bro.find_element_by_id("kw").send_keys(u"第一次单元测试")
    self.bro.find_element_by_id("su").click()
    sleep(1)

    if __name__=="__main__":
    unittest.main()
    运行的顺序为 def setUp() --- def test_search1() --- tearDown()  ,   def setUp() -- def test_search2()--- tearDown()  
    ---------------------
    作者:药药君
    来源:CSDN
    原文:https://blog.csdn.net/Static_at/article/details/82754561
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    EcFinal游记
    简要介绍补码的原理
    【SCOI2007】降雨量
    【ecfinal2019热身赛】B题
    【HAOI2011】problem a
    20200301(ABC)题解 by李旭晨
    20200228(ABC)题解 by 马鸿儒
    20200220(C)题解 b刘存
    20200225(DEF)题解 by 马鸿儒
    20200224(ABC)题解 by 马鸿儒
  • 原文地址:https://www.cnblogs.com/wf123/p/10894944.html
Copyright © 2020-2023  润新知