zoukankan      html  css  js  c++  java
  • unittest(2)

    测试用例执行顺序

    1.setUp和tearDown相关

    setUp:表示前置条件,它在每一个用例执行之前必须会执行一次 
          setUp可以理解为我们需要自动化测试时,需要打开网页窗口,输入对应测试地址,这一些属于前置条件。
    tearDown:表示释放资源,它在每次用例执行完之后会执行一次
    tearDown可以理解为我们测试完毕后,需要关闭浏览器。
     

    2.默认执行顺序

    类内的普通方法执行顺序会默认按方法的字母asc码大小执行
    import unittest
    class myTest(unittest.TestCase):
        def setUp(self):
            print("前置测试条件")
        def tearDown(self):
            print("后置测试条件")
        def test02(self):
            print("普通方法1")
        def test01(self):
            print("普通方法2")
    if __name__ == '__main__':
        unittest.main()
    执行结果:

    (1)setUp和tearDown每执行一个方法就要执行一次
    (2)普通方法的执行顺序会按方法名的asc码大小从小的开始执行
    一般情况下测试用例会根据方法名的asc码大小从小的开始执行,这是最基本的执行方式也是最大的执行方式
     

    3.TestSuite套件的使用

    TestSuite可以使得用例按添加的顺序执行,先添加的先执行,后添加的后执行
    使用方法:
    (1)先初始化测试套件: suite=unittest.TestSuite()
    (2)把测试用例添加到测试集合中: suite.addTest(类名("方法名"))
    (3)执行测试用例: unittest.TextTestRunner().run(suite)
    import unittest
    class myTest(unittest.TestCase):
        def test_f1(self):
            print("普通方法1")
        def test_f2(self):
            print("普通方法2")
        def test_f3(self):
            print("普通方法3")
    if __name__ == '__main__':
        suite=unittest.TestSuite()
        suite.addTest(myTest("test_f1"))
        suite.addTest(myTest("test_f2"))
        suite.addTest(myTest("test_f3"))
        unittest.TextTestRunner().run(suite)
    执行的结果是:

    但是有一种情况,当使用了TestSuite套件,但是方法名的asc码大小又是跟添加的顺序相反的时候,会优先按方法名asc码从小到大执行,此时TestSuite套件会失效
    import unittest
    class myTest(unittest.TestCase):
        def test_c(self):
            print("普通方法1")
        def test_b(self):
            print("普通方法2")
        def test_a(self):
            print("普通方法3")
    if __name__ == '__main__':
        suite=unittest.TestSuite()
        suite.addTest(myTest("test_c"))
        suite.addTest(myTest("test_b"))
        suite.addTest(myTest("test_a"))
        unittest.TextTestRunner().run(suite)
    执行的结果是:

    4.类执行方式

    类执行方法可以避免多次添加suite.addTest
    用法:实例化suite时,添加一个makesuite, suite=unittest.TestSuite(unittest.makesuite(类名))

    import unittest
    class myTest(unittest.TestCase):
        def test_01(self):
            print("普通方法1")
        def test_02(self):
            print("普通方法2")
        def test_03(self):
            print("普通方法3")
    if __name__ == '__main__':
        suite=unittest.TestSuite(unittest.makesuite(myTest))
        unittest.TextTestRunner().run(suite)
    执行结果:

    5.按加载模块来执行

    一般一个模块有多个类时,同时想执行该模块所有类中的方法,就用加载模块
    用法:suite=unittest.TestLoader().loadTestsFromModule("模块名.py")
    import unittest
    class myTest(unittest.TestCase):
        def test_01(self):
            print("普通方法1")
        def test_02(self):
            print("普通方法2")
        def test_03(self):
            print("普通方法3")
    
    class myTest02(unittest.TestCase):
        def test_mytest01(self):
            print("类test_mytest01的方法01")
        def test_mytest02(self):
            print("类test_mytest01的方法02")
    
    if __name__ == '__main__':
        suite=unittest.TestLoader().loadTestsFromModule("unit01.py")
        unittest.TextTestRunner(verbosity=2).run(suite)
    执行结果:

  • 相关阅读:
    MyEclipse的优化
    关于学习Hadoop中未总结的资料
    OSChina 的 Tomcat 配置 server.xml
    Linux 定时任务 Crontab命令 详解
    常用Linux命令收集
    SQL练习 高级子查询
    JAVA设计模式中的单例模式
    Linux课程笔记 Rsync数据同步服务
    Linux课程笔记 SSH介绍
    Linux课程笔记 Raid技术介绍
  • 原文地址:https://www.cnblogs.com/Qliupeng/p/11913335.html
Copyright © 2011-2022 走看看