所以我在页面上有很多按钮/滑块/输入等。 我需要所有这些按钮/滑块...来在页面末尾创建某种形式。 当我需要完成一些步骤时,如何在BDD中处理这种情况。 ?还是在最后,我为每个步骤都做断言是否正确?我还想更改示例:表中的值,只是为了检查不同的条件/状态。
这只是我代码的一小部分
And as a deeplink url input "<deeplink_url_on_news_feed_banner>"
And enter "<display_priority_on_news_feed>" as a display priority number
And click cta on news feed banner
And input cta text into cta news banner "<cta_text_news_banner>"
And from the news_feed banner choose art file button
And select available banner second
And click create button
Then announcement form has been created with valid announcement_name
Then compare platform selection to announcement not the archive table
Then compare segment string "<segment_string>" to text in announcement
Then compare display priority number "<display_priority_number>" to text
Then compare deep link url "<deeplink_url>" to deep link url in
Then compare amount of cool down "<minutes>" to minutes in announcement ta
以上看起来很难看,也许我可以做得更好? 我无法将这些步骤与小故事分开,因为我需要选择几乎所有按钮或否才能创建表单
答案 0 :(得分:1)
这是使用Gherkin表的好处。查看您的方案,其中一些输入已参数化。其他的基本上是“硬编码”或场景之间的常量。有两种基本策略可以使您在步骤的简洁性和可组合性之间取得平衡。
当我看到类似And select available banner second
的步骤时,我立即想到“此情况需要横幅-任何横幅-而且我不在乎只要 a 横幅被选中。”
使用表格对您的步骤进行定语,可让您指定方案中的值,同时为其他您不关心的必要值提供默认值:
When I create the following foo
| Field | Value |
| Deep link URL | <deeplink_url_on_news_feed_banner> |
| Display priority number | <display_priority_on_news_feed> |
| CTA news banner | <cta_text_news_banner> |
步骤定义将有一个Table
对象作为其最后一个参数,您可以一个一个地访问这些值。对于您的方案不关心的必填字段,您将有一个空字符串或null字符串。如果遇到空值(例如“可用横幅”),那么您的步骤定义可以选择一个智能默认值(例如第二个可用横幅)。
优点是您可以为当前方案不关心的字段选择智能默认值,并缩短方案。缺点是您在幕后发生了一些“魔术”,其中必填字段被赋予了虚拟数据。
另一种策略是结合上面的新步骤为其他必填字段提供通用步骤。然后就没有“魔术”了:
When I create the following foo
| Field | Value |
| Deep link URL | <deeplink_url_on_news_feed_banner> |
| Display priority number | <display_priority_on_news_feed> |
| CTA news banner | <cta_text_news_banner> |
And I choose a news feed banner
I choose a news banner
步骤将替换选择横幅的4个程序步骤:
And click cta on news feed banner
And input cta text into cta news banner "<cta_text_news_banner>"
And from the news_feed banner choose art file button
And select available banner second
When I choose a news feed banner
步骤将实现导航用户界面的严格细节,以便选择新闻提要横幅。
您的断言也可以被清除:
Then the following announcement should exist:
| Field | Value |
| Segment | <segment_string> |
| Display priority | <display_priority_number> |
| Deep link URL | <deeplink_url> |
| Cool down in minutes | <minutes> |
类似于上面的When
步骤,您可以使用Gherkin表对象进行比较。
其他Then
步骤尽可能地简洁。您只能走得很远才能清理您的步骤。有时情况只是漫长的。您可以将其分解为单个方案,并且只有一个断言。这样可以缩短每个方案的时间,但最终您会得到更多的方案。这是一种平衡的行为。
答案 1 :(得分:0)
无论如何对步骤进行分组,您仍然可以选择每个按钮。
例如,您可以简化此部分
And as a deeplink url input "<deeplink_url_on_news_feed_banner>"
And enter "<display_priority_on_news_feed>" as a display priority number
And click cta on news feed banner
And input cta text into cta news banner "<cta_text_news_banner>"
And from the news_feed banner choose art file button
And select available banner second
And click create button
类似
And fill the necessary form data
And click create button
然后粘合的代码将执行相同的步骤,您只需将所有内容放在一个方法中即可,而不是5或6个方法。