2
我想要一個單獨的類來運行我所有的測試,然後從main調用該類來顯示結果。不幸的是,我得到這樣的錯誤:使用python的unittest模塊的未綁定錯誤
Traceback (most recent call last):
File "/home/dhatt/workspace/pyqt_DALA_ServiceTracker/src/Main.py", line 21, in <module>
allsuite = unittest.TestLoader.loadTestsFromModule(TestAllSuite)
TypeError: unbound method loadTestsFromModule() must be called with TestLoader instance as first argument (got type instance instead)
如何更改我的代碼,以便我可以運行我的測試?
我正在使用python 2.6.5。
如果您發現我的測試結構本身也存在問題(主調用主測試類,然後調用所有其他測試類),請告訴我。我願意接受建議,以我的測試代碼更好的佈局(在互聯網上傳播的例子只是使用單元測試時給你最基礎的)
下面是從TestAllClass我的代碼(這是調用其他的測試類)
import unittest
from TestSettings import TestSettings
from TestConnectDB import TestConnectDB
class TestAllSuite(unittest.TestCase):
def testsuite(self):
suite_settings = TestSettings.suite()
suite_connectDB = TestConnectDB.suite()
alltests = unittest.TestSuite([suite_settings, suite_connectDB])
return alltests
,這裏是我的主要的組成部分,調用TestAllClass
if __name__ == '__main__':
allsuite = unittest.TestLoader.loadTestsFromModule(TestAllSuite)
unittest.TextTestRunner(verbosity=2).run(allsuite)
這裏是我的測試類的一個實例(如果這能幫助):
from Settings import Settings
import unittest
class TestSettings(unittest.TestCase):
def suite(self):
suite = unittest.TestSuite()
tests = ['test_confirm_ip', 'test_valid_conn','test_correct_location']
return unittest.TestSuite(map(suite, tests))
def setUp(self):
self._test_settings = Settings('/home/dhatt/ServiceTrackerSettings.ini')
self.ip_add, self.conn, self.digby = self._test_settings._get_config_variables()
def tearDown(self):
self._test_settings = None
self.ip_add = None
self.conn = None
self.digby = None
def test_confirm_ip(self):
self.assertEqual((str(self.ip_add)), ('142.176.195.250'))
def test _confirm_conn(self):
self.assertEqual((str(self.conn)), ('conn1'))
def test_confirm_location(self):
self.assertEqual((self.digby), (True))
好的。感謝您的澄清。感謝劇本,我從來沒有想過要這樣看。稍後我會看到它如何在添加更多測試的情況下執行,但目前看起來不錯。 – 2010-08-24 12:12:36
另外,如果我有2.7版本的Python,我可以做到這一點。 http://docs.python.org/library/unittest.html#unittest.TestLoader.discover 可惜... – 2010-08-24 14:43:44
@丹尼:感謝您指出這一點。我不知道「TestLoader.discover」。 – unutbu 2010-08-24 14:50:14