TH3*_*339 7 python unit-testing
对不起基本问题.我使用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()
Run Code Online (Sandbox Code Playgroud)
我想要的下一步是创建另一个名为test_page.py的脚本,该脚本运行单元测试脚本并将结果保存到变量(我需要将结果发布到网页).
test_page.py
from model_test.py import *
a=modelOutputTest.testMsed()
Run Code Online (Sandbox Code Playgroud)
但是,我收到了以下错误.
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)
Run Code Online (Sandbox Code Playgroud)
谁能给我一些建议?谢谢!
感谢Nix的帮助!我的下一个问题是:我需要在一个循环中测试两个给定案例的函数.它发布在这里.
Nix*_*Nix 15
你需要使用一个 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()
Run Code Online (Sandbox Code Playgroud)
>>> 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)
Run Code Online (Sandbox Code Playgroud)