【问题标题】:Wrap specflow scenario within try-catch在 try-catch 中包装 specflow 场景
【发布时间】:2014-12-04 19:39:38
【问题描述】:

我遇到了与此处描述的 C# selenium 绑定有关的问题:Selenium Error - The HTTP request to the remote WebDriver timed out after 60 seconds

在运行我的 selenium 测试时偶尔会引发超时异常。这些测试都是使用规范流编写的,我很想有一种方法来捕获该异常并将该特定异常的测试返回为 Inconclusive(而不是失败)。

有谁知道将每个规范流程场景包装在 try catch 块中的方法?那有可能吗?还是一种无需将每个单独的步骤定义包装在 try catch 块中即可自动捕获此异常的方法?

谢谢!

【问题讨论】:

  • 哎呀。这听起来很糟糕。我希望这些测试失败。如果测试超时,被标记为“不确定”,并且会遇到错误怎么办。一位开发人员查看了测试报告并说:“哦,我们有一个不确定的测试,没有失败。让我们发布代码。”这就是 bug 进入生产环境的方式。
  • 我的工作流程涉及在发布任何内容之前对失败/不确定的测试进行分类。对我来说,不确定的意思就是——没有足够的信息来知道它是否是一个真正的失败。在这种情况下,测试要么是由于不稳定而失败,要么是一个实际的错误——没有进一步调查就无法知道。因此,将其标记为不确定对我来说更有意义。

标签: c# selenium specflow


【解决方案1】:

我找到了解决此问题的方法,我可以在每个步骤之后使用 [AfterStep] 绑定检查异常。这对我有用,失败的测试现在被标记为不确定:

[AfterStep]
    public void check()
    {
        var exception = ScenarioContext.Current.TestError;
        if (exception is WebDriverException 
            && exception.Message.Contains("The HTTP request to the remote WebDriver server for URL "))
        {
            Assert.Inconclusive(exception.Message);
        }
    }

希望有人觉得这有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 2010-09-26
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多