Есть ли способ пропустить тест, если другой тест не прошел раньше? Я использую стандартную настройку для тестирования пакета с помощью devtools / testthat, и одна функция зависит от другой функции. Итак, если тест для этой функции не удался, я хочу пропустить тест для функции, которая зависит от него.
Я попытался обернуть первый тест в tryCatch()
и пропустить второй тест, если первый тест завершается с ошибкой, то есть
context('This is a test file with two tests')
skip_test = FALSE
tryCatch({
test_that('This is a test that fails', {
fail()
})
}, error = function(e) {
print(e)
skip_test <<- TRUE
})
test_that('This test is skipped if the first test failed', {
skip_if(skip_test, 'The first test was unsuccessful')
expect_equal(1+1, 2)
})
skip_test имеет значение TRUE глобально, поскольку в противном случае он изменяется только в среде первого test_that()
. Этот подход работает при непосредственном выполнении кода в консоли, поскольку неудачный тест возвращает ошибку при использовании в консоли (см. Документацию test_that()
).
Однако при тестировании всего пакета через devtools::test()
функция, неудачный тест, похоже, не возвращает ошибку. Это означает, что с моим подходом невозможно обнаружить неудачные тесты.
Есть ли другой способ пропустить тесты зависимых функций?