9

基本的な質問でごめんなさい。1つのスクリプトでモデルをチェックするためにunittestメソッドを使用しました。さて、私の質問は、このスクリプトを別のファイルから呼び出して、テスト結果を保存するにはどうすればよいかということです。以下は私のコードサンプルです:

**model_test.py**

import unittest
import model_eq #script has models

class modelOutputTest(unittest.TestCase):
    def setUp(self):
        #####Pre-defined inputs########
        self.dsed_in=[1,2]

        #####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):
            fun = model_eq.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)

if __name__ == '__main__':
    unittest.main()

次のステップは、test_page.pyという別のスクリプトを作成することです。このスクリプトは、単体テストスクリプトを実行し、結果を変数に保存します(結果をWebページに投稿する必要があります)。

test_page.py    

from model_test.py import *
a=modelOutputTest.testMsed()

しかし、次のエラーが発生しました。

Traceback (most recent call last):
  File "D:\Dropbox\AppPest\rice\Rice_unittest.py", line 16, in <module>
    a= RiceOutputTest.testMsed()
TypeError: unbound method testMsed() must be called with RiceOutputTest instance as first argument (got nothing instead)

誰かが私にいくつかの提案をすることができますか?ありがとう!

Nixの助けをありがとう!次の質問は、ループ内の2つのケースで関数をテストする必要があるということです。ここに掲載されています。

4

3 に答える 3

18

あなたは使用する必要がありますtest runner

テストランナーテストランナーは、テストの実行を調整し、ユーザーに結果を提供するコンポーネントです。ランナーは、グラフィカルインターフェイス、テキストインターフェイスを使用するか、テストの実行結果を示すために特別な値を返すことができます。

from unittest.case import TestCase
import unittest
from StringIO import StringIO
class MyTestCase(TestCase):
    def testTrue(self):
        '''
        Always true
        '''
        assert True

    def testFail(self):
        '''
        Always fails
        '''
        assert False

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
pprint(result.failures)
stream.seek(0)
print 'Test output\n', stream.read()

>>> Output:  
>>> Tests run  2
>>> Errors  []
>>> [(<__main__.MyTestCase testMethod=testFail>,
>>> 'Traceback (most recent call last):\n  File "leanwx/test.py", line 15, in testFail\n                assert False\nAssertionError\n')]
>>> Test output
>>> F.
>>> ======================================================================
>>> FAIL: testFail (__main__.MyTestCase)
>>> ----------------------------------------------------------------------
>>> Traceback (most recent call last):
>>>   File "leanwx/test.py", line 15, in testFail
>>>     assert False
>>> AssertionError
>>>
>>>----------------------------------------------------------------------
>>>Ran 2 tests in 0.001s
>>>
>>>FAILED (failures=1)
于 2013-01-11T16:50:55.240 に答える