gpt4 book ai didi

python - PyDev 未捕获 unittest.TextTestRunner 输出?

转载 作者:太空宇宙 更新时间:2023-11-03 19:28:32 24 4
gpt4 key购买 nike

当我使用以下基本使用模式从它们所在的模块将单元测试作为“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 Run”相同的模块或从终端运行相同的模块时,它的行为正确,因此由于某种原因,PyUnit 视角无法正确加载测试。我用这种替代方法得到了相同的结果:

import unittest
import mypackage.mytests

tests = unittest.TestLoader().loadTestsFromModule(mypackage.mytests)
unittest.TextTestRunner().run(tests)

是否有另一种方法来导入包含 TestCase 派生类的模块并让 PyDev 捕获测试运行器的输出?

最佳答案

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

例如:

import unittest 
from mypackage.mytests import *

如果您有多个并且 TestCase 类具有相同的名称,您需要执行以下操作:

import unittest
from mypackage.mytests import Test as Test1
from mypackage.mytests2 import Test as Test2
...

在这种情况下,您可能会更好地创建一个简单的帮助程序来加载模块中的所有类,并将 TestCase 的子类以不同的名称放入当前模块中(应该很简单,通过目录中的 dir/getattr 执行此操作)模块)。

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

关于python - PyDev 未捕获 unittest.TextTestRunner 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7166321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com