我们是Specflow的新手&我们试图在我们的公司中实现它,我们开发了很少的特性作为烟雾/回归测试的一部分&目前,executing.We正在遵循所描述的方法--我们观察到的是用于重新描述步骤--这些步骤必须分解为其最重要的组件/单元特性,如下所示-
Scenario: Search Cash book by Id
Given Site browser launched
Given Login is successful with "******" and "********"
Given Set the service to "*******"
Given Search a specific account "ABCDEFG" to match "Account"
When A specific account is selected "ABCDEFG"
When I search cash book with these data "CSX"
Then the result should display records with transaction Amount "$1234"
我们观察到的是,如果您的步骤不像上面所描述的那样,它们的可重用性在其他特性中是非常有限的。这种方法是正确的,还是需要与特性相关的步骤,而不是可重用性?
发布于 2015-08-17 14:33:55
示例的规范与关键字驱动的测试与您试图实现的不一样。真正的BDD方法应该是这样的:
Feature: Viewing transaction amounts in certain cashbooks
As a customer
In order to know if I am paid
I want to see the amount next to a transaction
Background:
Given the following transaction:
| Name | Account | CashBook | Transaction | Amount |
| CustomerA | ABCDEFG | CSX | GlipGlob | 1234 |
Scenario: A Cash book can be searched by ID
Given I am logged in as CustomerA
And I have selected the account "ABCDEFG"
And I have selected the cash book "CSX"
Then there should be a transaction with amount "1234"
背景检查是否存在和/或设置数据。如何做到这一点对特性(实现细节)并不重要。这可以通过直接DB查询、the服务或通过GUI (不推荐)来完成。
这个场景也是在没有实现上下文的情况下运行的:您是作为一个you服务器、通过浏览器还是作为Windows应用程序运行它并不重要。因此,“复选框”或“填充编辑框”和“单击链接”等信息不应出现在功能中。如果您正在测试特定的页面布局,则例外。
在您的测试设计开始时,这使得您的步骤在较低的级别上不太可重用,因此您必须在您的胶水代码中创建可重用的步骤。对于Selenium en use测试,您可以使用页面对象模式来实现这一点。
最后,您将有一个更灵活的框架。当复选框更改为一个无线电按钮或对象上的一个链接时,您只需要更改页面对象中的一个方法,而不需要更改100个功能文件。
如果管理层决定他们想要一个iPhone应用程序,你可以重复使用你所有的测试,只需为你的胶水代码做一个不同的界面。
当开发人员将REST交给应用程序,因为它需要与其他源互连时,您只需更改胶水代码就可以重用相同的特性文件。
因此,是的,在低级别上,如果步骤中没有定义对象,那么步骤并不是非常可重用的,但从长远来看,它将给您带来巨大的优势。当您想在可实现的步骤定义中使用低级别的步骤时,也许SpecFlow是错误的框架。
https://stackoverflow.com/questions/31979749
复制相似问题