zoukankan      html  css  js  c++  java
  • Python+selenium之unittest单元测试(3)关于测试用例执行的顺序

    一、测试用例执行的顺序

    用例的执行顺序涉及多个层级,在多个测试目录的情况下,先执行哪个目录?在多个测试文件的情况下,先执行哪个文件?在多个测试类的情况下,先执行哪个测试类?,在多个测试方法(用例)的情况下,先执行哪个测试方法?

     1 import unittest
     2 from calculator import Count
     3 
     4 
     5 class TestBdd (unittest.TestCase):
     6     def setUp(self):
     7         print("test TestBdd :")
     8 
     9     def test_ccc(self):
    10         print("test ccc")
    11 
    12     def test_aaa(self):
    13         j = Count(2, 4)
    14         print("test aaa")
    15 
    16     def tearDown(self):
    17         pass
    18 
    19 
    20 class TestAdd (unittest.TestCase):
    21     def setUp(self):
    22         print("test TestAdd :")
    23 
    24     def test_bbb(self):
    25         print("test bbb")
    26 
    27 
    28 
    29     def tearDown(self):
    30         pass
    31 
    32 
    33 if __name__ == '__main__':
    34     '''
    35     suite = unittest.TestSuite ()
    36     suite.addTest (TestAdd ('test_add'))
    37     suite.addTest (TestAdd ('test_add2'))
    38     suite.addTest (TestSub ('test_sub'))
    39     suite.addTest (TestSub ('test_sub2'))
    40     run = unittest.TextTestRunner ()
    41     run.run (suite)
    42 '''
    43     unittest.main()

    unittest框架默认会根据ASCII码的顺序加载测试用例,数字和字母的顺序为:0-9,a-z,A-Z.所以TestAdd类会优先于TestBdd类被执行,test_aaa()方法会优先于test_ccc()被执行,因而并没有按照用例从上到下的顺序执行。因而它并没有按照用例从上到下执行的顺序执行。

    假如想要按照指定的顺序执行测试用例,就不能使用默认的main()函数,而是需要通过TestSuite()类的addTest()方法按照一定的顺序加载。

     1 import unittest
     2 from calculator import Count
     3 
     4 
     5 class TestBdd (unittest.TestCase):
     6     def setUp(self):
     7         print("test TestBdd :")
     8 
     9     def test_ccc(self):
    10         print("test ccc")
    11 
    12     def test_aaa(self):
    13         j = Count(2, 4)
    14         print("test aaa")
    15 
    16     def tearDown(self):
    17         pass
    18 
    19 
    20 class TestAdd (unittest.TestCase):
    21     def setUp(self):
    22         print("test TestAdd :")
    23 
    24     def test_bbb(self):
    25         print("test bbb")
    26 
    27 
    28 
    29     def tearDown(self):
    30         pass
    31 
    32 
    33 if __name__ == '__main__':
    34     suite = unittest.TestSuite ()
    35     suite.addTest (TestBdd ('test_ccc'))
    36     suite.addTest (TestBdd ('test_aaa'))
    37     suite.addTest (TestAdd ('test_bbb'))
    38     # suite.addTest (TestSub ('test_sub2'))
    39     run = unittest.TextTestRunner ()
    40     run.run (suite)
    41 
    42     # unittest.main()

    现在的执行顺序是addTest()方法所加载的顺序。discover()的加载测试用例的规则与main()方法相同。所以,我们只能通过测试用例的命名来提高被执行的优先级。例如,将希望先被执行的测试用例命名为“test_a”,将希望最后执行的测试用例命名为“test_z”

    二、执行多级目录的用例

    在对应的测试过程中,有控制web用例的数量,但是当测试用例达到一定的量级,就要考虑划分目录

  • 相关阅读:
    Openssl和PKCS#11的故事
    SSL连接建立过程分析(5)
    SSL连接建立过程分析(1)
    关于OpenSSL支持USBKEY证书的尝试
    install the CLEARCASE with eclipse 3.4,duplicate location
    10种技巧可提升Android应用运行效果
    专访实战专家 揭秘iOS神奇开发之路
    win objc codeblocks
    redeclared as different kind of symbol ,undefined reference to `__objc_class_name_Rectangle12'
    201203NEWS
  • 原文地址:https://www.cnblogs.com/fengyiru6369/p/7575473.html
Copyright © 2011-2022 走看看