Python 从被测模块运行单元测试

Python 从被测模块运行单元测试,python,unit-testing,Python,Unit Testing,我有一组模块,每个模块都有一个基于unittest的测试。我想在每个模块中定义main以运行其测试,但由于导入循环(特别是在测试中使用mymodule import myclass中的时),我会出现导入错误。 我怀疑这是一个已解决的问题,那么-我应该在模块的main中放入什么来运行其相应的测试呢?如果我理解正确,您已经有一个文件(我们称之为mymodule.py)如下所示: import unittest from mymoduletests import MyModuleTests clas

我有一组模块,每个模块都有一个基于
unittest
的测试。我想在每个模块中定义main以运行其测试,但由于导入循环(特别是在测试中使用mymodule import myclass中的
时),我会出现导入错误。

我怀疑这是一个已解决的问题,那么-我应该在模块的main中放入什么来运行其相应的测试呢?

如果我理解正确,您已经有一个文件(我们称之为mymodule.py)如下所示:

import unittest
from mymoduletests import MyModuleTests

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

if __name__ == '__main__':
    unittest.main()  
import unittest
from mymodule import myclass

class MyModuleTests(unittest.TestCase):
    def test_somefunction(self):
        m = myclass()
        self.assertEqual(4, m.somefunction(2))
还有一个单独的文件(我们称之为mymoduletests.py),看起来像这样:

import unittest
from mymoduletests import MyModuleTests

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

if __name__ == '__main__':
    unittest.main()  
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
然后运行它,您会得到:

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

OK

我是否正确理解了您?

如果我正确理解了您的意思,那么您有一个文件(我们称之为mymodule.py)如下所示:

import unittest
from mymoduletests import MyModuleTests

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

if __name__ == '__main__':
    unittest.main()  
import unittest
from mymodule import myclass

class MyModuleTests(unittest.TestCase):
    def test_somefunction(self):
        m = myclass()
        self.assertEqual(4, m.somefunction(2))
还有一个单独的文件(我们称之为mymoduletests.py),看起来像这样:

import unittest
from mymoduletests import MyModuleTests

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

if __name__ == '__main__':
    unittest.main()  
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
然后运行它,您会得到:

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

OK

我理解正确了吗?

在main中显示相应的代码!我对
unittest.loadTestsFromModule
执行的操作完全相同,没有任何问题。在main中显示相应的代码!我对
unittest.loadTestsFromModule执行的操作完全相同,没有任何问题。