1. 程式人生 > >selenium2學習:單元測試框架(2)

selenium2學習:單元測試框架(2)

__init__ module asc 單獨 sci str mos ddt IT

1.4 Discover更多測試用例

discover(start_dir,pattern=‘test*.py‘,top_level_dir=None)

找到指定目錄下所有測試模塊,並可遞歸查到子目錄下的測試木塊,只有匹配到的文件名才會被加載。如果啟動的不是頂層目錄,那麽頂層目錄必然單獨指定。

l start_dir:要測試的模塊名或測試用例的目錄。

l pattent=‘test*.py’:表示用例文件名的匹配原則。此處匹配文件名一test開頭的所有.py類型文件,*表示任意多個字符。

l top_level_dir=None :測試模塊的頂層目錄,如果沒有頂層目錄,默認為None。

被調用的calculator.py

#0517006:calculator:add test
# 計算器類

class count:
    def __init__(self,a,b):
        self.a = int(a)
        self.b = int(b)

    def add(self):
        return self.a + self.b
    def sub(self):
        return self.a - self.b
    

測試用例:add

#0517008:suite:add

from calculator import
count import unittest class testadd(unittest.TestCase): def setUp(self): print(Test add Start) def tearDown(self): print(Test add Over) def test_add1(self): j = count(2,3) self.assertEqual(j.add(),5,msg= 錯了1) def test_add2(self): j
= count(3,3) self.assertEqual(j.add(),5,msg= 錯了2) if __name__ == __main__: unittest.main()

測試用例:sub

#0517009:suite:sub

from calculator import count
import unittest

class testsub(unittest.TestCase):
    def setUp(self):
        print(Test sub Start)
        
    def tearDown(self):
        print(Test sub Over)

    def test_sub1(self):
        j = count(2,3)
        self.assertEqual(j.sub(),-1,msg= 錯了1)

    def test_sub2(self):
        j = count(3,3)
        self.assertEqual(j.sub(),5,msg= 錯了2)

if __name__ == __main__:
    unittest.main()

執行用例:runtest

import unittest

#定義測試用例的目錄為當前目錄
test_dir = ./
discover = unittest.defaultTestLoader.discover(test_dir, pattern=test*.py)

if __name__ == __main__:
    runner = unittest.TextTestRunner()
    runner.run(discover)

執行結果:

>>> 
 RESTART: C:/Users/tians/AppData/Local/Programs/Python/Python36/example-JLL/modules/002-calculator/runtest.py 
Test add Start
Test add Over
.Test add Start
Test add Over
FTest sub Start
Test sub Over
.Test sub Start
Test sub Over
F
======================================================================
FAIL: test_add2 (test_add.testadd)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\tians\AppData\Local\Programs\Python\Python36\example-JLL\modules\002-calculator\test_add.py", line 19, in test_add2
    self.assertEqual(j.add(),5,msg= 錯了2)
AssertionError: 6 != 5 : 錯了2

======================================================================
FAIL: test_sub2 (test_sub.testsub)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Users\tians\AppData\Local\Programs\Python\Python36\example-JLL\modules\002-calculator\test_sub.py", line 19, in test_sub2
    self.assertEqual(j.sub(),5,msg= 錯了2)
AssertionError: 0 != 5 : 錯了2

----------------------------------------------------------------------
Ran 4 tests in 0.078s

FAILED (failures=2)
>>>  

註:unittest框架默認根據ASCII碼的順序加載測試用例,數字與字母的順序為:0~9,A~Z,a~z。如果想讓某個特定的用例優先執行,要麽將該用例的命名靠前,要麽使用TestSuite類的addTest()方法按照一定的順序加載。

selenium2學習:單元測試框架(2)