Python调试失败 - 执行结束

问题描述:

我正在用Visual Studio 2015(Python工具扩展)调试Python。Python调试失败 - 执行结束

我对Python很陌生,奇怪的是,当我调试波纹管代码时,它运行到第18行,然后是第19行,然后是第18行,它再次毫不客气地退出。不打我的catch块,不打20或21行。没有错误信息。任何人都知道可能会造成这种情况?

单元测试正在测试Git Hub here上的常见google api功能。

我的代码:

import unittest 
import sys 
import os 
import exceptions 
from _multiprocessing import flags 


sys.path.insert(0, "C:\Users\Jamie.Marshall\Documents\Visual Studio 2015\Projects\GetDCMPlalyStationData\DCMPSDataQuery") 

try: 
    from dfareporting_utils import get_arguments 
except ImportError: 
    print(ImportError.message) 
    print('No Import') 


try: 
#Line18 
    class Test_dfareporting_utility_test(unittest.TestCase): 
#Line19             
     def test_A(self):       
      flags = get_arguments(sys.argv, __doc__, parents=[argparser]) 
      self.assertEqual(flags[0], "") 

except Exception as ex: 
    print(ex.message) 
    print(ex.source) 

    if __name__ == '__main__': 
     unittest.main() 
+1

当一个类被初始化,只有签名行并执行里面的方法的代码。只有在调用方法时才会执行方法中的代码。除非'class'或'def'行出现错误,否则围绕该类的'try'将不起作用。 –

+0

结果如何删除try模块?克劳斯所说的应该是一个很大的可能性“除非在课堂或高清线上出现错误,否则你在课堂上的尝试将无效。” –

+0

克劳斯是对的。我不明白脚本的运行顺序。 @克劳斯D你可以发布答案,所以我可以标记回答?非常感谢。 –

当一个类被初始化时,只有类的签名行,在类和签名行方法内执行的顶层的代码。只有在调用方法时才会执行方法中的代码。例如:

E class MyClass: 
| 
E  my_class_attribute = 1 
| 
E  def my_method(self, a): 
N   b = a + 1 
N   return b 

E = excuted; N = not executed 

除非在类或def线上出现错误,否则您在类中的尝试将不起作用。

在结果中,如果在其中一行中出现错误,则您在类中的尝试将不起作用。

要在测试中发现异常,请在方法内部输入try/except。但是你实际上应该有一个确定的状态在您的测试和错误应该被预期或不存在,所以它可能是最好的指望得到一个错误,测试与with self.assertRaises(YourErrorType):