2012-01-10 117 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

相關問題