Python PyDev未捕获unittest.TextTestRunner输出?

Python PyDev未捕获unittest.TextTestRunner输出?,python,pydev,Python,Pydev,当我以Python单元测试的形式运行单元测试时,PyDev PyUnit透视图正确地显示了我的单元测试的输出,这些单元测试来自于它们使用以下基本使用模式的模块: import unittest class MyTest(unittest.TestCase): def test_something(self): pass if __name__ == '__main__': unittest.main() 然而,当我从另一个模块导入测试时,就像这样 impor

当我以Python单元测试的形式运行单元测试时,PyDev PyUnit透视图正确地显示了我的单元测试的输出,这些单元测试来自于它们使用以下基本使用模式的模块:

import unittest

class MyTest(unittest.TestCase):
    def test_something(self):
        pass

if __name__ == '__main__':
    unittest.main()
然而,当我从另一个模块导入测试时,就像这样

import unittest
import mypackage.mytests

if __name__ == '__main__':
    unittest.main(module=mypackage.mytests)
…不运行任何测试。当我运行与Python相同的模块或者从终端运行时,它的行为是正确的,因此出于某种原因,PyUnit透视图没有正确加载测试。我用这种替代方法得到了相同的结果:

import unittest
import mypackage.mytests

tests = unittest.TestLoader().loadTestsFromModule(mypackage.mytests)
unittest.TextTestRunner().run(tests)
是否有其他方法导入包含TestCase派生类的模块并让PyDev捕获测试运行程序的输出?

PyDev不会运行您的_umain,它会收集类本身,因此,您需要在模块中加载类,以便找到它们并以>Python Unittest的方式运行,甚至可以直接使用Ctrl+F9快捷键——在这种情况下,它不会显示类,但是在Ctrl+F9之后直接按Enter键应该可以在最新的PyDev中运行模块中的所有测试

e、 g:

import unittest 
from mypackage.mytests import *
如果您有多个TestCase类,并且TestCase类具有相同的名称,则需要执行以下操作:

import unittest
from mypackage.mytests import Test as Test1
from mypackage.mytests2 import Test as Test2
...
在这种情况下,您最好创建一个简单的帮助器来加载模块中的所有类,并将TestCase的子类以不同的名称放在当前模块中,这样做应该很简单,可以通过模块中的dir/getattr来完成

不过,请注意,在PyDev中,您可以选择多个文件/文件夹,并以运行方式运行>Python unittest,它将运行在模块中或在目录中递归找到的所有测试,因此,根据您的用例,这可能已经足够了。

PyDev不会运行您的_umain,它将收集类本身,因此,您需要在模块中加载类,以便找到它们并以>Python Unittest的方式运行,或者甚至直接使用Ctrl+F9快捷方式—在这种情况下,它不会显示类,但在Ctrl+F9之后直接按Enter键应该可以在最新的PyDev中运行模块中的所有测试

e、 g:

import unittest 
from mypackage.mytests import *
如果您有多个TestCase类,并且TestCase类具有相同的名称,则需要执行以下操作:

import unittest
from mypackage.mytests import Test as Test1
from mypackage.mytests2 import Test as Test2
...
在这种情况下,您最好创建一个简单的帮助器来加载模块中的所有类,并将TestCase的子类以不同的名称放在当前模块中,这样做应该很简单,可以通过模块中的dir/getattr来完成

尽管如此,请注意,在PyDev中,您可以选择多个文件/文件夹并执行run as>Python unittest,它将运行在模块中或在目录中递归找到的所有测试,因此,根据您的用例,这可能已经足够了