unittest 框架学习

今天我学习了,怎么把testcase分到不同的文件中,然后在集中到一个testsuite中一起跑,我还学会了怎么打包,怎么引用。

打包引用,我新建了一个文件夹,目录机构如下:

folder  --test_suit

file            -----__init__.py

                ------ testcase1.py

                ------ testcase2.py

                ------- testcase3.py

               -------testrun.py

然后就可以引用这个package了

我再这个文件夹外面建了一个文件,内容包括:

import unittest

from test_suit import testcase1,testcase2,testcase3



def suite():
    
    alltests = unittest.TestSuite([testcase1.suite1(),testcase2.suite2(),testcase3.suite3()])
    return alltests

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(suite())

运行这个文件获得的结果如下:

test_testcase1 (test_suit.testcase1.DefaultWidgetSizeTestCase1) ... ok
test_testcase2 (test_suit.testcase1.DefaultWidgetSizeTestCase1) ... ok
test_testcase3 (test_suit.testcase1.DefaultWidgetSizeTestCase1) ... ok
test_testcase1 (test_suit.testcase2.DefaultWidgetSizeTestCase2) ... ok
test_testcase2 (test_suit.testcase2.DefaultWidgetSizeTestCase2) ... ok
test_testcase1 (test_suit.testcase3.DefaultWidgetSizeTestCase3) ... ok
test_testcase2 (test_suit.testcase3.DefaultWidgetSizeTestCase3) ... ok
test_testcase3 (test_suit.testcase3.DefaultWidgetSizeTestCase3) ... ok

----------------------------------------------------------------------
Ran 8 tests in 0.100s

OK



当然也可以在testsuit文件夹中建立一个文件,testrun.py,内容如下:

import unittest

import testcase1,testcase2,testcase3



def suite():
    
    alltests = unittest.TestSuite([testcase1.suite1(),testcase2.suite2(),testcase3.suite3()])
    return alltests

if __name__ == "__main__":
    unittest.TextTestRunner(verbosity=2).run(suite())

运行这个文件的结果是:


test_testcase1 (test_suit.testcase1.DefaultWidgetSizeTestCase1) ... ok
test_testcase2 (test_suit.testcase1.DefaultWidgetSizeTestCase1) ... ok
test_testcase3 (test_suit.testcase1.DefaultWidgetSizeTestCase1) ... ok
test_testcase1 (test_suit.testcase2.DefaultWidgetSizeTestCase2) ... ok
test_testcase2 (test_suit.testcase2.DefaultWidgetSizeTestCase2) ... ok
test_testcase1 (test_suit.testcase3.DefaultWidgetSizeTestCase3) ... ok
test_testcase2 (test_suit.testcase3.DefaultWidgetSizeTestCase3) ... ok
test_testcase3 (test_suit.testcase3.DefaultWidgetSizeTestCase3) ... ok

----------------------------------------------------------------------
Ran 8 tests in 0.100s

OK

tips:

1.__init__.py 这个文件必须有,但是可以为空,因为有了这个文件才会把这个test_suit当做一个package

2.testcase1.py 内容如下:

  # -*- coding: cp936 -*-
  import unittest


class DefaultWidgetSizeTestCase1(unittest.TestCase):
    def setUp(self):    #测试前的准备工作
        pass

    def test_testcase1(self):   #测试用例1,且必须以test开头才能被认作是一个测试用例
        pass

    def test_testcase2(self):
        pass

    def test_testcase3(self):        
        pass
    

    def tearDown(self):  #测试后的清除数据工作
        pass



def suite1():
    testcase1 = ['test_testcase1','test_testcase2','test_testcase3']
    suite1 = unittest.TestSuite(map(DefaultWidgetSizeTestCase1,testcase1))
    return suite1

  


所以unittest框架测试套集中运行case的大体流程明白了,剩下就是怎么能出好的test case来,让我们拭目以待吧。

你可能感兴趣的:(unittest 框架学习)