Closed anton-ryabkov closed 2 years ago
это ожидаемое, да
в интерфейсе StepCtx есть методы Require()
и Assert()
для отображения состояния шагов рекомендуется использование ассертов оттуда (эти ассерты так же будут отображены в отчете)
type SomeSuite struct {
suite.Suite
}
func (s *SomeSuite) TestSome(t provider.T) {
t.WithNewStep("Step 1", func(sCtx provider.StepCtx) {
sCtx.Require().Equal(2, 2)
})
t.WithNewStep("Шаг 2", func(sCtx provider.StepCtx) {
sCtx.Require().Equal(2, 3)
})
t.WithNewStep("Шаг 3", func(sCtx provider.StepCtx) {
sCtx.Require().Equal(2, 2)
})
}
func TestSkipDemo(t *testing.T) {
suite.RunSuite(t, new(SomeSuite))
}
Альтернативно, Вы можете попробовать прокидывать вместо t
в ассерты интерфейс provider.StepCtx
type SomeSuite struct {
suite.Suite
}
func (s *SomeSuite) TestSome(t provider.T) {
t.WithNewStep("Step 1", func(sCtx provider.StepCtx) {
require.Equal(sCtx, 2, 2)
})
t.WithNewStep("Шаг 2", func(sCtx provider.StepCtx) {
require.Equal(sCtx, 2, 2)
})
t.WithNewStep("Шаг 3", func(sCtx provider.StepCtx) {
require.Equal(sCtx, 2, 2)
})
}
func TestSkipDemo(t *testing.T) {
suite.RunSuite(t, new(SomeSuite))
}
Это работает так, потому что в testify используется интерфейс TestingT
, который реализует как provider.StepCtx
, так и provider.T
@anton-ryabkov . подскажите, смог ли я ответить на Ваш вопрос?
Антон, добрый день.
Да, спасибо. Это то что надо.
Перевел тест на использование require.Equal(sCtx, 2, 3)
и теперь отчет формируется правильно :+1:
Добрый день
Сегодня попробовал использовать ваш проект для написания unit тестов, в результате проб возник следующий вопрос: если я в тесте делаю Step (через WithNewStep) и в переданной функции тест фейлится (require не проходит), то в allure отчете все равно данный шаг помечается как успешный. Пример кода, и отчета прилагаю:
Аналогично если делать t.Step.
133a9d3f-db0d-11ec-9001-bce92f7d8cfc-result.zip
Подскажите, это ожидаемое поведение, или же нет?