使用PyDev测试运行器失败

1 投票
2 回答
1206 浏览
提问于 2025-04-16 22:13

我在PyDev中创建了一个默认的单元测试模块,模块内容如下:

import unittest
class Test(unittest.TestCase):
    def setUp(self):
        pass


    def tearDown(self):
        pass


    def testName(self):
        self.assertEqual(1, 2) #here I expect to see failure message


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()

然后我使用“运行方式 -> Python单元测试”这个选项来执行单元测试。在输出控制台中,我只看到以下两行:

正在查找文件... 完成。

正在导入测试模块 ...

然后就没有了。Eclipse看起来像是在执行测试,但实际上什么都没有发生。我可以点击“停止”按钮来终止测试,但如果不点击,什么也不会发生。

注意,在网上搜索时,我发现上面的输出应该包括文件和模块的名称(例如,可以参考这个讨论

如果我使用“运行方式 -> python运行”这个选项,测试就会按预期执行。我确定我在使用PyDev测试运行器时漏掉了什么,但我找不到是什么。

把测试函数的名字从testName改成test_name也没有解决这个问题。

2 个回答

0

我觉得(根据我的记忆)你应该在测试名称前面加上 test_(下划线是必须的)。

0

好的,我找到了问题所在。

原来,我的模块初始化代码的几个部分依赖于解析 sys.argv[0]。当我使用“以 Python 运行”时,sys.argv[0] 包含了我执行程序的正确路径,这样一切都正常。但是当我选择“以 Python 单元测试运行”时,运行的程序变成了 PyDev 插件目录下的“runfiles.py”。这个意外的变化导致了一个无限循环,我误以为“什么都没有发生”。我会把这种行为当作设计缺陷,并修正我代码中有问题的部分。

撰写回答