[英]ImportError cannot import name when using baseclass with multiple subclasses
我需要有一個運行setup / teardown的基類,然后是繼承的子類,以便允許所有測試運行,無論某些測試是否失敗。 當試圖有多個導入基類的子類時,我看到第二個子類的導入錯誤。 我有以下文件: runtestcases.py
testcase1.py
testcase2.py
這是runtestcases.py:
import unittest
import testcase1, testcase2
class ArithTestSuper (unittest.TestCase):
def setUp (self):
print("Setting up ArithTest cases")
def tearDown (self):
print("Cleaning up ArithTest cases")
def my_suite():
suite = unittest.TestSuite()
suite.addTest (testcase1.ArithTest())
suite.addTest (testcase2.ArithTestFail())
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
test_suite = my_suite()
runner.run (test_suite)
這是testcase1.py:
from runtestcases import ArithTestSuper
class ArithTest (ArithTestSuper):
def runTest (self):
""" Test addition and succeed. """
print("Running ArithTest")
self.failUnless (1+1==2, 'one plus one fails!')
self.failIf (1+1 != 2, 'one plus one fails again!')
self.failUnlessEqual (1+1, 2, 'more trouble with one plus one!')
這是testcase2.py:
from runtestcases import ArithTestSuper
class ArithTestFail (ArithTestSuper):
def runTest (self):
""" Test addition and fail. """
print("Running ArithTestFail")
self.failUnless (1+1==2, 'one plus one fails!')
self.failIf (1+1 != 2, 'one plus one fails again!')
self.failUnlessEqual (1+1, 2, 'more trouble with one plus one!')
self.failIfEqual (1+1, 2, 'expected failure here')
self.failIfEqual (1+1, 2, 'second failure')
Compilation fails on testcase2.py with:
ImportError: cannot import name ArithTestSuper
如果我只運行testcase1它也可以運行 - 同樣,只運行testcase2。 如果我嘗試這兩個錯誤發生。 思考?
這是循環導入的問題。 將基類移出您運行的模塊。
要回答你的第二個問題( https://stackoverflow.com/a/12885312/1745627 ):避免覆蓋runTest
方法; 它由unittest框架調用,基本上可以運行你的測試用例。 使用命令約定(如test_xxx
實現自己的測試方法(unittest查找以test
開始執行的方法)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.