2012-01-10 116 views
2

我有一堆模块和每个模块我有一个基于unittest的测试。我想在每个模块中定义主要的运行测试,但由于导入循环导致输入错误(特别是当我在测试中使用from mymodule import myclass时 我怀疑这是一个已解决的问题,所以 - 我应该如何放入我的?模块的主要运行其相应的测试从测试模块运行单元测试

+0

显示您的主对应代码!我和'unittest.loadTestsFromModule'完全一样,没有任何问题。 – 2012-01-10 09:14:17

回答

4

如果我理解正确的话,你已经有了一个文件(可以称之为mymodule.py),看起来像这样:

import unittest 
from mymoduletests import MyModuleTests 

class myclass(object): 
    def somefunction(self, x): 
     return x*x 

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

和一个单独的文件(让称之为mymoduletests.py),看起来像这样:

import unittest 
from mymodule import myclass 

class MyModuleTests(unittest.TestCase): 
    def test_somefunction(self): 
     m = myclass() 
     self.assertEqual(4, m.somefunction(2)) 

如果运行mymodule.py你得到以下结果:

Traceback (most recent call last): 
    File "mymodule.py", line 2, in <module> 
    from mymoduletests import MyModuleTests 
    File "/Users/srgerg/Desktop/p/mymoduletests.py", line 2, in <module> 
    from mymodule import myclass 
    File "/Users/srgerg/Desktop/p/mymodule.py", line 2, in <module> 
    from mymoduletests import MyModuleTests 
ImportError: cannot import name MyModuleTests 

但是,如果你改变mymodule.py这样:

class myclass(object): 
    def somefunction(self, x): 
     return x*x 

if __name__ == '__main__': 
    import unittest 
    from mymoduletests import MyModuleTests 
    unittest.main() 

,然后运行它,你就会得到:

. 
---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 

我的理解正确吗?

+0

是的,你有。谢谢! – 2012-01-10 10:31:49

相关问题