zoukankan      html  css  js  c++  java
  • 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文件。

  • 相关阅读:
    写日志文件
    内存文件映射应用举例『转』
    HOOK编程
    获取当前进程的名称
    C++实现FTP文件传输
    C/C++ 实现windows进程/线程/模块 遍历
    Unicode下的CString与char *转换
    MFC常用基本数据类型
    geos 3.6.1编译 win7 vs2015
    JQuery Mobile iscroll插件使用教程及注意事项
  • 原文地址:https://www.cnblogs.com/Rita-LJ/p/11778099.html
Copyright © 2011-2022 走看看