2017-03-07 78 views
0

我有一個文件correct.py我可以假定其中定義的所有方法都是正確的,我想測試student.py中的方法。假定這包含與correct.py相同的方法。測試函數是否與已知函數的行爲相同

我試圖使用unittest模塊,到目前爲止,它似乎是一個很多我的測試看起來像:

import correct 
import student 

def test_func(self): 
    self.assertEquals(correct.func(<input>),student.func(<input>)) 

這將在各種輸入來完成。有什麼方法可以定義一個函數,我只需運行f(<input>)f(<input>,func)即可獲得相同的行爲?

回答

2

你可以這樣創建一個函數:

def test(self, argument, func): 
    Fcorrect = getattr(correct, func) 
    Fstudent = getattr(student, func) 
    self.assertEquals(Fcorrect(argument), Fstudent(argument)) 

只需通過你想要的argument參數任何類型的<input>並通過功能名稱的func參數爲字符串。

例如與3測試功能"foo",你會做一個論點如下:

self.test("foo", 3) 
+0

我是否需要重新定義這個每個測試類我用?對於作業的每個「部分」,我都定義了一個類(因爲我認爲是傳統的練習)。所以,可能有'class TestProblemXMethods(unittest.TestCase)'多個問題。那麼,在'unittest.TestCase'中定義這個測試是否有意義,以便它被導入到每個測試類中? 這似乎工作,但我只是猶豫要複製多次,因爲我猜有一個更好的解決方案。 – Mark

相關問題