• Selenium 2自动化测试实战30(unittest补充)


    unittest补充

    1.用例执行的顺序

    #test.py
    #coding:utf-8
    from Demo1 import Count
    import unittest
    
    class TestBdd(unittest.TestCase):
    
        def setUp(self):
            print "test TestBdd:"
    
        def test_ccc(self):
            print "test ccc"
    
        def test_aaa(self):
            print "test aaa"
    
        def tearDown(self):
            pass
    
    class TestAdd(unittest.TestCase):
        def setUp(self):
            print "test TestAdd:"
    
        def test_add(self):
            print "test bbb"
    
        def tearDown(self):
            pass
    
    if __name__=="__main__":
        unittest.main() 

    运行后的结果如下图所示:

    无论执行多少次,结果都是一样的,通过上面的结果,规律如下:
    unittest框架默认根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0~9,A~Z,a-z。所以,TestAdd类会优先于TestBdd类被执行,test_aaa()方法会优先于test_ccc()被执行,因而它并没有按照用例从上到下的顺序执行。

    对于测试目录和测试文件来说,unittest框架同样是按照这个规则来加载测试用例的。
    那么可不可以让test_ccc()先执行?答案是肯定的,只是不能使用默认的main()方法了,而是需要通过TestSuite类的addTest()方法按照一定的顺序来加载。

    #test.py
    #coding:utf-8
    import unittest
    
    class TestBdd(unittest.TestCase):
    
        def setUp(self):
            print "test TestBdd:"
    
        def test_ccc(self):
            print "test ccc"
    
        def test_aaa(self):
            print "test aaa"
    
        def tearDown(self):
            pass
    
    class TestAdd(unittest.TestCase):
        def setUp(self):
            print "test TestAdd:"
    
        def test_add(self):
            print "test bbb"
    
        def tearDown(self):
            pass
    
    if __name__=="__main__":
        suite=unittest.TestSuite()
        suite.addTest(TestBdd("test_ccc"))
        suite.addTest(TestAdd("test_add"))
        suite.addTest(TestBdd("test_aaa"))
    
        runner=unittest.TextTestRunner()
        runner.run(suite)

    执行结果如下所示:

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

    2.执行多级目录的用例

    要控制web用例的数量,但是当测试用例达到一定量级时,就要考虑划分目录,比如目录如下测试目录:
    test_project/test_case/
    --test_bbb/
    ------test_ccc/
    ---------test_c.py
    ------test_b.py
    --test_ddd/
    ---------test_d.py
    test_a.py
    对于这个目录,如果将discover()方法中的start_dir参数定位为“./test_case/”目录,那么只能加载test_a.py文件中的测试用例。怎样让unittest框架查找到test_case/的子目录中的测试文件呢?方法很简单,在每个目录下放一个__init__.py文件。

  • 相关阅读:
    loj#2540. 「PKUWC2018」随机算法
    loj#2538. 「PKUWC2018」Slay the Spire
    loj#2537. 「PKUWC2018」Minimax
    CF662C Binary Table
    bzoj4589: Hard Nim
    【HDU5909】Tree Cutting(FWT)
    P3175 [HAOI2015]按位或
    P4389 付公主的背包
    P4233 射命丸文的笔记
    GFS分布式文件系统环境部署与管理
  • 原文地址:https://www.cnblogs.com/Rita-LJ/p/11778099.html
Copyright © 2020-2023  润新知