Изменение переменной при неудачном модульном тесте 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
Дело в том, чтобы использовать ==
непосредственно выполнить первоначальную проверку на равенство без провала теста.