2017-03-07 35 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

相关问题