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

Рабочий процесс Drake может иметь несколько пользовательских функций, хранящихся в его каталоге R. Имеет смысл разработать модульные тесты для пользовательских функций. Существуют хорошо зарекомендовавшие себя инструменты и структуры для запуска модульных тестов testthat для пакета R в RStudio (или из командной строки).

  • Но каковы передовые методы разработки и выполнения модульных тестов test that для пользовательских функций в рабочем процессе Drake?

Приветствуются любые указатели на ресурсы или примеры. Спасибо!


person Matthew Kuperus Heun    schedule 15.04.2020    source источник


Ответы (1)


Лучшие практики для модульных тестов не сильно меняются, когда появляется drake. Вот основные соображения.

  1. Если вы используете drake, вы, вероятно, имеете дело с раздражающе долгим временем выполнения в вашем полном конвейере. Итак, одна из проблем - создать тесты, которые не занимают вечность. Я рекомендую вызывать ваши функции для небольшого набора данных, небольшого количества итераций или чего-то еще, что позволит провести тест за разумное время. Таким образом можно выполнить множество базовых проверок. Чтобы более тщательно проверить ответы, поступающие от ваших функций, вы можете запустить дополнительный набор проверок результатов drake конвейера.
  2. Если вы используете testthat, ваши функции, вероятно, организованы в подобную пакету структуру или даже полноценный пакет, и вы даже можете загружать свои функции с помощью devtools::load_all() или library(yourPackage). Если вы загружаете свои функции таким образом, вместо того, чтобы искать скрипты функций по отдельности, обязательно вызовите expose_imports() до make(), чтобы drake мог анализировать функции на предмет зависимостей.
person landau    schedule 15.04.2020
comment
Спасибо за быстрый ответ, Уилл! Читая между строк, кажется, вы предполагаете, что репозиторий, в котором выполняется рабочий процесс Drake, также может быть пакетом R. Правильно ли я вас истолковываю? Если да, то есть ли какие-нибудь ресурсы для интеграции пакетов / Drake? (Я не ищу информацию о пакетах R, поскольку я создал несколько из них. Скорее, информация о том, что репозиторий drake также является пакетом.) Еще раз спасибо за отличный пакет drake! - person Matthew Kuperus Heun; 16.04.2020
comment
Я вижу пакет drakepkg по адресу github.com/tiernanmartin/drakepkg. Возможно, это хорошее место для начала. - person Matthew Kuperus Heun; 16.04.2020
comment
Ага, ты на правильном пути с drakepkg. Также кратко упоминаются основные общие передовые практики в книгах. ropensci.org/drake/projects.html#workflows-as-r-packages, но это немного. - person landau; 17.04.2020
comment
В дикой природе есть еще примеры, и я вернусь и обновлю эту ветку, если смогу их найти. Мои личные заблокированы, и компания конфиденциальна. - person landau; 17.04.2020
comment
Еще раз спасибо, Уилл! Я думаю, что следующим шагом будет преобразование моего существующего репозитория, в котором используется drake, в структуру пакетов. Я сообщу здесь о любых опытах / проблемах, которых нет в других местах. - person Matthew Kuperus Heun; 17.04.2020