0

对不起,如果这个问题很愚蠢。我创建了一个单元测试类,它需要从外部获取给定的输入和输出。因此,我想应该启动这些值。但是,我在以下代码中遇到了一些错误:

代码:

import unittest
from StringIO import StringIO

##########Inputs and outputs from outside#######
a=[1,2]
b=[2,3]
out=[3,4]
####################################
def func1(a,b):
    return a+b

class MyTestCase(unittest.TestCase):
    def __init__(self,a,b,out):
        self.a=a
        self.b=b
        self.out=out
    def testMsed(self):
        for i in range(self.tot_iter):
            print i
            fun = func1(self.a[i],self.b[i])
            value = self.out[i]
            testFailureMessage = "Test of function name: %s iteration: %i expected: %i != calculated: %i" % ("func1",i,value,fun)
            self.assertEqual(round(fun,3),round(value,3),testFailureMessage)

if __name__ == '__main__':
    f = MyTestCase(a,b,out)

from pprint import pprint
stream = StringIO()
runner = unittest.TextTestRunner(stream=stream, verbosity=2)
result = runner.run(unittest.makeSuite(MyTestCase(a,b,out)))
print 'Tests run', result.testsRun

但是,我收到以下错误

Traceback (most recent call last):
  File "C:testing.py", line 33, in <module>
    result = runner.run(unittest.makeSuite(MyTestCase(a,b,out)))
  File "C:\Python27\lib\unittest\loader.py", line 310, in makeSuite
    return _makeLoader(prefix, sortUsing, suiteClass).loadTestsFromTestCase(testCaseClass)
  File "C:\Python27\lib\unittest\loader.py", line 50, in loadTestsFromTestCase
    if issubclass(testCaseClass, suite.TestSuite):
TypeError: issubclass() arg 1 must be a class

谁能给我一些建议?谢谢!

4

1 回答 1

1

问题的根源是这一行,

result = runner.run(unittest.makeSuite(MyTestCase(a,b,out)))

unittest.makeSuite 需要一个,而不是一个类的实例。所以只是 MyTestCase,而不是 MyTestCase(a, b, out)。这意味着您不能以您尝试的方式将参数传递给您的测试用例。您可能应该将代码从init移动到 setUp 函数。在 setUp 中访问 a、b 和 out 作为全局变量,或者查看此链接以获取有关将参数传递给单元测试的信息。

顺便说一句,是问题所在的python中的源文件。阅读可能会有所帮助。

于 2013-01-14T00:17:34.507 回答