Python 当将基类与多个子类一起使用时,ImportError无法导入名称

Python 当将基类与多个子类一起使用时,ImportError无法导入名称,python,selenium,webdriver,Python,Selenium,Webdriver,我需要有一个运行setup/teardown的基类,然后是继承的子类,以便允许所有测试运行,不管某些测试是否失败。当尝试有多个子类导入基类时,我看到第二个子类的导入错误。我有以下文件: runtestcases.py testcase1.py testcase2.py 下面是runtestcases.py: import unittest import testcase1, testcase2 class ArithTestSuper (unittest.TestCase): def set

我需要有一个运行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也会工作。如果我同时尝试这两种方法,就会出现此错误。想法?

这是循环导入的问题。将基类移出运行的模块。

回答第二个问题():避免重写
runTest
方法;它将由unittest框架调用,基本上完成运行测试用例的工作。使用命名约定实现您自己的测试方法,如
test\u xxx
(unittest查找以
test
开头的方法以执行)。

从runtestcases中删除
行,从testcase1和testcase2中导入AritTestSuper
,然后再次运行runtestcases.py。我已经尝试过了。它最终抛出:name错误:name'arihtestsuper'不是defined@IonutHulub:wtf?这显然是假的建议。@tera_incognita我想你忽略了这一点。。。您正在重写错误的方法(“runTest”)。