【问题标题】:Specflow/Gherkin testing XML documentsSpecflow/Gherkin 测试 XML 文档
【发布时间】:2018-01-25 15:38:47
【问题描述】:

我们有一个 ASP.NET/MVC WebApi 项目,其中包含由 Specflow 驱动的大量端到端测试。到目前为止,所有的请求和响应都是 JSON,所以它工作得很好。

然而,现在我们有一个需要 XML 主体的端点,理想情况下,我们应该将其作为特性文件中的文字......

Scenario Outline:
    Given I am authenticated
    When I post the following XML
    """
    <xml>
        <foo>
            <Bar>
        </foo>
    </xml>
    """
    Then something good happens

Examples:
    | Bar     |
    | apples  |
    | bananas |

问题在于我们大量使用了Scenario Outline,而用于注入场景示例属性的 Specflow/Gherkin 语法看起来像 XML 标记,例如&lt;firstName&gt;

有没有办法将 Specflow/gherkin 与带有场景大纲的 XML 文档一起使用,例如,将示例中的值注入 Bar

【问题讨论】:

  • 你真的需要有文字 XML 吗?这种低级规范与 Specflow 方法不太吻合。将任意 XML 放入 &lt;Bar&gt; 似乎也很笨拙(转义会很痛苦...)读者是否有必要真正查看 XML 才能理解该功能?否则,您可能会考虑将其设置为类似于When I call feature X with the frobber set to &lt;Bar&gt;,并将实际的 XML 留给步骤实现。 (请注意,在这种情况下,您拥有可用于捕获/重用/构建请求的完整语言机制。)
  • 另外,在我的测试中,&lt;Bar&gt; 实际上被替换为applesbananas。这使您不清楚您的实际问题是什么:您只是不喜欢替换参数看起来像标签吗?标签和参数名有冲突吗?
  • 是的,对于大多数测试,我们将使用一个步骤,让我们指定 XML 的动态位,如果我们必须这样做,整个事情都不会太糟糕,但是我们倾向于有一两个在特性中包含文字 XML 的“快乐路径”示例——它只是很好的参考。
  • 刚刚看到您的第二个回复-我目前无法对此进行测试,这个问题是推测性的-如果它“正常工作”,那就太好了!不过可能还有点不清楚。
  • @Fran 我发现对于机器使用的 API 的测试,在功能中明确包含请求的主体可以有很多价值,而没有任何明显的缺点 - 尽管对于端点的一般测试或它在其他测试的步骤中使用,将身体放在其他地方会更好

标签: c# automated-tests specflow gherkin end-to-end


【解决方案1】:

我个人会为您需要的每个 xml 样本(例如fruitText.xml)创建 xml 文件,并将文件名传递给 Gherkin。然后步骤定义将找到该文件并将 xml 加载到 AUT 的相关部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多