Gherkin测试网络服务电话

时间:2015-12-23 19:38:25

标签: web-services bdd specflow

我们正在使用Specflow自动化我们的回归套件,但现在我们希望将其提升到自动化我们的Web服务的下一个级别。

使用Gherkin“Gven-When-Then”,如何使用/编写webservices调用。

例如:如何编写我的给定 - 当 - 然后为下面的请求?

请求

    <soapenv:Header/>

    <soapenv:Body>

            <ns:GetConsolidatedBookingAccountHistory>

                    <ns:request>

                            <ns1:ServiceAuthenticationRequest>

                                    <ns1:Password>?</ns1:Password>

                                    <ns1:Station>?</ns1:Station>

                                    <ns1:UserName>?</ns1:UserName>

                            </ns1:ServiceAuthenticationRequest>

                            <ns2:BookingID>?</ns2:BookingID>

                            <ns2:CutOffDate>?</ns2:CutOffDate>

                    </ns:request>

            </ns:GetConsolidatedBookingAccountHistory>

    </soapenv:Body>

1 个答案:

答案 0 :(得分:0)

我要做的第一件事就是停止将Specflow视为一种自动化工具,而不是。 Specflow是一个协作工具(虽然它确实有助于自动化)。 Specflow是存在的,因此团队中的每个人都了解系统作为输入所接受的内容,触发系统的操作以及系统作为输出返回的内容。它有助于定义要求并提供清晰度。它还允许任何人了解测试失败时发生的事情。

考虑到这一点,让我们看一下电子邮件登录的例子(带有用户名,密码和提交),我希望你能够考虑给定,何时,然后改为输入,触发和输出:

输入是您提供给系统的内容,它需要什么。在这种情况下,它将是我们的用户名和密码。我会将其描述为:

Given I have a valid username and password

现在这可行了,但是在Gherkin中你应该避免在步骤中间使用and这个词,而是我们可以这样做:

Given when I have a valid username
And I have a valid password

触发器是发生了什么,采取了什么动作,采取了什么动作(这是BDD中的行为)。理想情况下,这不应描述确切的操作(避免单击,类型等单词)。而是描述一般行为。在我们的示例中,这可能看起来像:

When I login

我再次描述了这种行为,我没有说When I type in my username and password and hit submit我说它非常笼统

最后,我们得到了我们的输出,我们期待的结果是什么,应该发生什么。在我们的例子中,这可能是:

Then I should be taken to my inbox