0

この質問がばかげている場合は申し訳ありません。外部から特定の入力と出力を取得する必要がある unittest クラスを作成しました。したがって、これらの値を開始する必要があると思います。ただし、次のコードでいくつかのエラーが発生しました。

コード:

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(a、b、out)ではなく、MyTestCaseだけです。これは、試みている方法でパラメータをテストケースに渡すことができないことを意味します。おそらく、コードをinitからsetUp関数に移動する必要があります。setUp内のグローバルとしてa、b、およびoutにアクセスするか、このリンクを参照して、パラメーターを単体テストに渡すことに関する情報を確認してください。

ちなみに、ここに問題が発生したpython内のソースファイルがあります。読むのに役立つかもしれません。

于 2013-01-14T00:17:34.507 に答える