Статьи

Обработка незавершенного производства с Thucydides и JBehave с использованием тегов @pending и @wip

Thucydides  версия 0.9.268 была только что выпущена, с несколькими очень интересными новыми функциями. Thucydides — это библиотека отчетов с открытым исходным кодом, которая помогает вам писать более эффективные автоматизированные критерии приемлемости в стиле BDD, а также генерировать более подробные отчеты о тестировании, отчеты о требованиях и живую документацию. В этой статье мы рассмотрим некоторые новые способы, которыми эта версия позволяет вам обрабатывать сценарии незавершенного производства или ожидающие выполнения с Thucydides и JBehave.

В JBehave сценарий считается проходящим, если все определения шагов реализованы, даже если кода нет. Это связано с тем, что в определениях шагов нет необходимости использовать библиотеки шагов, хотя это хорошая практика для более сложных тестов. Рассмотрим следующий сценарий:

Scenario:Logging on via Facebook
GivenJoeis a FrequentFlyer member
AndJoe has registered online via Facebook
WhenJoe logs on with a Facebook token
Then he should be given access to the site

Когда вы выполните это без определения шага, оно будет сообщено как ожидающее, как показано здесь:

pending_steps

Когда вы реализуете шаги, они будут считаться успешными, если исключение не выдается или шаг не помечен как ожидающий. Так что следующее действительно пройдет:

 @Given("$username has registered online via Facebook")

    public void has_registered_via_facebook(String username){}

Это потому, что нет способа узнать, что определение шага пустое — мы можем только знать, что методы @Step не были вызваны, что не обязательно означает, что оно пустое.

Вы можете сделать это ожидающим шагом, используя  org.jbehave.core.annotations.Pending  pending annotation, например:

@Pending
    @Given("$username has registered online via Facebook")
    public void has_registered_via_facebook(String username) {}

JBehave и Thucydides теперь сообщат об этом сценарии как ожидающем, даже если он имеет «реализованное» (хотя и пустое) определение шага:

ступенчатые детали

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

Тег @ignore позволяет пропустить статью во время выполнения теста, чтобы она не отображалась в отчетах.

Meta:
@ignore

Scenario:Logging on via Facebook
GivenJoeis a FrequentFlyer member
AndJoe has registered online via Facebook
WhenJoe logs on with a Facebook token
Then he should be given access to the site

Если вы хотите, чтобы сценарий появлялся в отчете, но пометил его как «ожидающий», даже если он потерпел неудачу, вы можете использовать   тег @pending непосредственно в файлах истории, например

Meta:
@pending

Scenario:Logging on via Facebook
GivenJoeis a FrequentFlyer member
AndJoe has registered online via Facebook
WhenJoe logs on with a Facebook token
Then he should be given access to the site

Scenario:Logging on via Twitter
GivenJoeis a FrequentFlyer member
AndJoe has registered online via Facebook
WhenJoe logs on with a Facebook token
Then he should be given access to the site

или, для отдельного сценария:

Scenario:Logging on via Facebook
Meta:
@pending

GivenJoeis a FrequentFlyer member
AndJoe has registered online via Facebook
WhenJoe logs on with a Facebook token
Then he should be given access to the site

В этом случае весь сценарий или история / функция будут сообщены как «ожидающие решения»:

Снимок экрана 2014-08-20 в 4.48.10 вечера

Вы также можете различать работу, которая еще не была начата, и работа, которая еще не завершена. Теги @skip или @wip будут действовать как тег @pending, но сообщат о сценарии или истории как о «пропущенных».

Scenario:Logging on via Facebook
Meta:
@wip

GivenJoeis a FrequentFlyer member
AndJoe has registered online via Facebook
WhenJoe logs on with a Facebook token
Then he should be given access to the site

Они будут отображаться по-разному в отчетах, как показано здесь:

 Снимок экрана 2014-08-20 в 17.10.59

Это хороший способ определить, над какими функциями в настоящее время ведутся работы.

 В следующей таблице приведены эти параметры:

какая где результат
@ Ожидание аннотации Код определения шага Индивидуальный шаг помечен как ожидающий
тег @pending Метаданные сценария в файле .story Весь сценарий помечен как ожидающий
тег @pending Метаданные истории в файле .story Все сценарии в файле истории помечены как ожидающие
@skip или @wip tag Метаданные сценария в файле .story Весь сценарий помечен как пропущенный
@skip или @wip tag Метаданные истории в файле .story Все сценарии в файле истории помечены как «пропущенные»
тег @ignore Метаданные истории или сценария в файле .story История / сценарий не будет выполнена и не появится в отчетах