使用PyDev测试运行器失败
我在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”。这个意外的变化导致了一个无限循环,我误以为“什么都没有发生”。我会把这种行为当作设计缺陷,并修正我代码中有问题的部分。