2013-01-11 162 views
0

這是1Python的單元測試循環功能

一個後續問題我需要在一個循環中兩個給定的情況下,以測試該功能。但是,根據印刷結果,似乎只檢查了第一次迭代?這與runner.run(unittest.makeSuite(MyTestCase))有關嗎?

import unittest 
from StringIO import StringIO 
import rice_output 

class MyTestCase(unittest.TestCase): 
    def setUp(self): 
     #####Pre-defined inputs######## 
     self.dsed_in=[1,2] 
     self.a_in=[2,3] 
     self.pb_in=[3,4] 

     #####Pre-defined outputs######## 
     self.msed_out=[6,24] 

     #####TestCase run variables######## 
     self.tot_iter=len(self.a_in) 

def testMsed(self): 
    for i in range(self.tot_iter): 
     print i 
     fun = rice_output.msed(self.dsed_in[i],self.a_in[i],self.pb_in[i]) 
     value = self.msed_out[i] 
     testFailureMessage = "Test of function name: %s iteration: %i expected: %i != calculated: %i" % ("msed",i,value,fun) 
     return self.assertEqual(round(fun,3),round(self.msed_out[i],3),testFailureMessage) 

from pprint import pprint 
stream = StringIO() 
runner = unittest.TextTestRunner(stream=stream) 
result = runner.run(unittest.makeSuite(MyTestCase)) 
print 'Tests run ', result.testsRun 
print 'Errors ', result.errors 

這裏是他的輸出:

0 
Tests run 1 
Errors [] 
[] 
Test output 
testMsed (__main__.MyTestCase) ... ok 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 

有什麼建議?謝謝!

回答

3

刪除return語句

def testMsed(self): 
    for i in range(self.tot_iter): 
    print i 
    fun = rice_output.msed(self.dsed_in[i],self.a_in[i],self.pb_in[i]) 
    value = self.msed_out[i] 
    testFailureMessage = "Test of function name: %s iteration: %i expected: %i != calculated: %i" % ("msed",i,value,fun) 
    self.assertEqual(round(fun,3),round(self.msed_out[i],3),testFailureMessage) 
+0

可以添加的東西,以保持迭代完成,即使assertEqual便不是假的? –

+0

我會創建每條消息的地圖,然後聲明它們是平等的。 – Nix

+0

嘗試匹配不同類型的錯誤? –