pyt*_*ser 5 python python-behave
我想在behave遇到异常时显式地使该步骤失败
例如。我正在根据行为文档编写代码 -
from behave import *
@when('verify test fails.*?(?P<param_dict>.*)')
def test_logger(context, param_dict):
try:
logger.info("testing the logger. this is info message")
logger.info(1/0)
except Exception as e:
logger.error("arrived at exception: "+str(e))
fail("failed with exception: "+str(e))
Run Code Online (Sandbox Code Playgroud)
但它抛出这个错误:
NameError:未定义名称“失败”
我也尝试了其他方法,但没有任何效果,例如。context.failed = True (也没有工作)
如果我不尝试显式失败,即使它进入异常块,最终测试结果也会成为 PASS ......这很奇怪。
context.failed只是由 Behave 设置的属性,不会按原样执行任何操作。它是一个信息属性,虽然您可以使用它来确定失败情况并抛出断言错误,但它本身不会做任何事情。请参阅上下文。失败
至于fail你提到的方法,它可能来自unittest模块,如这里所见。该模块也用于 Behave 的开发测试(参见他们的 Github)。不过我同意,这应该在他们的文档中得到澄清。
要修复您的错误,您需要导入unittest模块。要显式失败该步骤,您只需在记录消息后引发异常,如下所示:
except Exception as e:
logger.error("arrived at exception: "+str(e))
fail("failed with exception: "+str(e))
raise
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4355 次 |
| 最近记录: |