Изменение переменной при неудачном модульном тесте Ruby

Я использую Ruby Unit test в коде, как показано ниже.

assert_equal(x, 'strin')

Я хочу изменить переменную, если этот тест не пройден и тест все еще не пройден. Как я могу это сделать? Я сделал то же самое в Python, используя следующий код.

try:
  self.assertEqual(self.client.testString(''), '')
except AssertionError, e:
  test_basetypes_fails = True
  raise AssertionError( e.args )

2 ответа

Решение

#assert_equal метод в Руби test/unit библиотека поднимает Test::Unit::AssertionFailedError или же (MiniTest::Assertion в ruby ​​1.9.3 или более поздней версии) на несостоятельных утверждениях, поэтому:

begin
  assert_equal(x, 'strin')
rescue Test::Unit::AssertionFailedError
  # whatever code
  raise
end

assert_equal Метод в библиотеке модулей Ruby не вызывает исключения, поэтому вы не можете использовать тот же подход, который вы использовали в python, но то, что вы хотите сделать, достаточно просто. Вы действительно просто проверяете равенство двух значений и делаете что-то на основе этого:

if x == 'strin'
  # do something here when the "assert" succeeds
else
  test_basetypes_fails = true
  assert_equal(x, 'strin') # fail the test as normal
end

Дело в том, чтобы использовать == непосредственно выполнить первоначальную проверку на равенство без провала теста.

Другие вопросы по тегам