R: пропустить тест, если другой тест не пройден - PullRequest
0 голосов
/ 03 февраля 2020

Есть ли способ пропустить тест, если другой тест не прошел раньше? Я использую стандартную настройку для тестирования пакета с помощью 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() функция, неудачный тест, похоже, не возвращает ошибку. Это означает, что с моим подходом невозможно обнаружить неудачные тесты.

Есть ли другой способ пропустить тесты зависимых функций?

...