Python 2.7 如何在behave中测试未捕获/未处理的异常?

Python 2.7 如何在behave中测试未捕获/未处理的异常?,python-2.7,exception,testing,exception-handling,python-behave,Python 2.7,Exception,Testing,Exception Handling,Python Behave,当在应用程序中引发未解释的异常(未捕获/未处理的异常)时,应记录该异常。我想在behave中测试这种行为 日志记录用于检测未处理的异常,因此开发人员可以实现对这些异常的处理,或者在需要时修复它们 为了测试这一点,我想我必须让测试中的代码引发一个异常。问题是,如果不对生产代码中出现的异常进行硬编码,我就无法理解如何做到这一点。这是我想要避免的,因为我认为这个测试代码不属于生产环境 在进行单元测试时,我可以轻松地模拟函数来引发异常。在behave中,我无法执行此操作,因为应用程序是在另一个进程中启动

当在应用程序中引发未解释的异常(未捕获/未处理的异常)时,应记录该异常。我想在behave中测试这种行为

日志记录用于检测未处理的异常,因此开发人员可以实现对这些异常的处理,或者在需要时修复它们

为了测试这一点,我想我必须让测试中的代码引发一个异常。问题是,如果不对生产代码中出现的异常进行硬编码,我就无法理解如何做到这一点。这是我想要避免的,因为我认为这个测试代码不属于生产环境

在进行单元测试时,我可以轻松地模拟函数来引发异常。在behave中,我无法执行此操作,因为应用程序是在另一个进程中启动的


如何在行为测试中引发异常,使其看起来好像是生产代码导致的,而不在生产代码中硬编码异常?

不考虑框架/编程语言异常是出现问题时的一种状态。这个问题必须由应用程序以某种方式处理,这就是为什么一个好的程序员会在最多需要的地方编写异常处理代码的原因

异常处理可以是一切。在您的情况下,您希望测试是否记录了异常。因此,我在这里看到了一个简单的测试序列:

  • 执行将引发异常的代码/操作序列
  • 在测试自动化框架的帮助下,验证日志文件是否包含与上一步骤中引发的异常相关的条目

  • 你遗漏了一个要点。没有任何代码会故意引发异常。如果意外引发异常,应记录该异常,以便稍后处理。