Куда положить внешние файлы для проверки, что тестирует

Предположим, у меня есть такой тест:

require(testthat)
context("toy test")
test_that("toy", {
            df = my.read.file("test.txt", header=TRUE)
            expect_true(myfunc(df) == 3.14)
})

а этот тест опирается на внешний файл test.txt, куда тогда этот файл класть?


person qed    schedule 26.05.2015    source источник


Ответы (2)


Вы помещаете их в папку testthat (внутри tests). Сюда вы включаете любой «внешний» файл, который вы могли бы использовать для своих тестов (или который предоставляет некоторые дополнительные пояснения, которые пользователь может найти информативным, например, в файле «.txt»). У вас также есть ваши .r тестовые файлы.

В качестве альтернативы (или в дополнение): вы также можете загрузить файл из другого места, включив путь к файлу (например, к вашей папке data — используйте относительный путь). Однако это может привести к хрупкости инфраструктуры, поскольку вы не сможете полагаться на то, что это внешнее расположение будет доступно в любое время, и в этом случае testthat вызовет ошибку, когда не сможет найти файл.

Пример ссылки на файл за пределами tests см. в разделе здесь. Однако будьте осторожны, когда делаете это.

person Peter Verbeet    schedule 01.06.2015
comment
Может быть полезно отметить, что тесты запускаются с использованием каталога tests/testthat/ в качестве каталога getwd(). Я часто добавляю папку с входными данными внутрь tests/testthat, чтобы упростить навигацию по этому каталогу. - person rsmith54; 14.10.2019

Правильное место кажется (несколько интуитивно) /path/to/project/tests/testthat.

person qed    schedule 29.05.2015