Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PyDev测试运行程序失败_Python_Unit Testing_Pydev - Fatal编程技术网

Python 使用PyDev测试运行程序失败

Python 使用PyDev测试运行程序失败,python,unit-testing,pydev,Python,Unit Testing,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

我已经在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()
然后我使用“runas->Python单元测试”选项来执行单元测试。我在输出控制台中只看到以下两行:

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

正在导入测试模块

然后什么也没有。Eclipse的行为就像测试正在执行一样,但实际上什么也没有发生。我可以点击“停止”按钮来终止测试,但如果我不这样做,什么也不会发生

注意,在搜索网络时,我发现上面的输出应该包括文件名和模块名(参见示例)

如果使用“runas->python Run”选项,测试将按预期执行。我确信我错过了一些关于使用PyDev test runner的东西,但是我不知道是什么


将test*函数名从
testName
更改为
test\u name
并没有解决问题

我认为(从内存操作)您应该在测试名称前面加上test\u前缀(需要下划线)。

好的,我发现了问题

事实证明,我的模块的inititalization代码的几个部分依赖于解析
sys.argv[0]
。当使用“runas->Python Run”作为
sys.argv[0]
包含所执行程序的预期路径时,这种方法工作得很好。当使用“runas->Python单元测试”时,运行的程序是PyDev插件目录中的“runfiles.py”。这个意外的变化导致了一个无限循环,我将其解释为“什么也没发生”。我将把这种行为视为设计错误,并修改代码中有问题的部分