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
Когда вы выполните это без определения шага, оно будет сообщено как ожидающее, как показано здесь:
Когда вы реализуете шаги, они будут считаться успешными, если исключение не выдается или шаг не помечен как ожидающий. Так что следующее действительно пройдет:
@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
В этом случае весь сценарий или история / функция будут сообщены как «ожидающие решения»:
Вы также можете различать работу, которая еще не была начата, и работа, которая еще не завершена. Теги @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
Они будут отображаться по-разному в отчетах, как показано здесь:
Это хороший способ определить, над какими функциями в настоящее время ведутся работы.
В следующей таблице приведены эти параметры:
какая | где | результат |
---|---|---|
@ Ожидание аннотации | Код определения шага | Индивидуальный шаг помечен как ожидающий |
тег @pending | Метаданные сценария в файле .story | Весь сценарий помечен как ожидающий |
тег @pending | Метаданные истории в файле .story | Все сценарии в файле истории помечены как ожидающие |
@skip или @wip tag | Метаданные сценария в файле .story | Весь сценарий помечен как пропущенный |
@skip или @wip tag | Метаданные истории в файле .story | Все сценарии в файле истории помечены как «пропущенные» |
тег @ignore | Метаданные истории или сценария в файле .story | История / сценарий не будет выполнена и не появится в отчетах |