Как мне сделать, если заявления в сценариях огурца? - PullRequest
2 голосов
/ 06 сентября 2011

Мое приложение имеет разрешения, и некоторые тесты не нужно запускать, когда включено определенное разрешение, а некоторые тесты необходимо запускать, когда это же разрешение включено.?или мне нужно использовать другой фреймворк?

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

Стандартный способ исключения «тестов» в Cucumber заключается в добавлении к ним тега для их идентификации, а затем при вызове Cucumber вы указываете, какие теги включать / исключать.В вашем примере вы можете пометить конкретный сценарий:

@needs_permission
Scenario: View users billing information

Или пометить весь объект:

@needs_permission
Feature: Administrative area
    Scenario: View users billing information

Или пометить определенные примеры в схеме сценария:

Scenario Outline: Visit a page
    Given I visit "<page>"

Examples: Don't need permission
    | page    |
    | index   |
    | sitemap |

@needs_permission
Examples: Do need permission
    | page  |
    | admin |

Теперь, когда вы запускаете Cucumber, вы можете при необходимости исключить эти теги:

Когда разрешение включено и вы хотите запустить все тесты:

cucumber .

Когда разрешениевыключен, и вы хотите исключить тесты, которые в нем нуждаются:

cucumber . -t ~@needs_permission

Альтернатива, которую я использовал со смешанными результатами, если вы действительно не знаете заранее, - пометить шаг как pending если он не применяется с учетом текущего сценария, например,

Given /^I visit some page which needs permission$/ do
    pending "Permissions aren't enabled - skipping" unless permissions_enabled?
end

Это помечает шаг как «ожидающий», что на самом деле означает «не полностью реализованный», что не идеально, особенно если у вас естьмного таких шагов - может быть трудно гарантировать, что другие нереализованные шаги не заползут случайно и не будут скрыты всеми теми, которые вы намеренно пометили как таковые.

1 голос
/ 30 сентября 2011

У нас много похожего экземпляра, у нас есть 2 решения, либо предложенные теги, либо мы создаем разные сценарии для разных типов разрешений:

Given i log in as a moderator 
and there is a new post
when i view the post
Then i should see a delete button  

Given i log in as a normal user 
and there is a new post
when i view the post
Then i should not see a delete button  
0 голосов
/ 06 сентября 2011

Может быть возможно с использованием тегов. Трудно сказать без подробностей.

...