【发布时间】:2017-11-25 03:30:18
【问题描述】:
我正在使用 Visual Studio 2015(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()
【问题讨论】:
-
类初始化时,只执行签名行和里面方法的代码。方法中的代码只有在方法被调用时才会执行。除非在
class或def行上引发错误,否则您在班级周围的try将无效。 -
去掉try模块的结果如何? Klaus 所说的应该很有可能“除非在 class 或 def 行上引发错误,否则您对 class 的尝试将没有任何效果。”
-
克劳斯是对的。我不明白脚本的运行顺序。 @Klaus D 您可以将其作为答案发布,以便我标记为已回答吗?非常感谢。
标签: python visual-studio unit-testing debugging