Как вы автоматически тестируете только выбранные тесты с помощью библиотеки R testthat, используя grep или эквивалентный? - PullRequest
0 голосов
/ 07 февраля 2020

Как я могу запустить testthat в автоматическом режиме, чтобы при редактировании файлов в моей папке R перезапускались только определенные c тесты?

У меня много тестов, и некоторые из них медленнее других. Мне нужно иметь возможность запускать определенные c тесты, иначе я буду ждать до 15 минут, чтобы завершить мой набор тестов. (Я бы хотел сделать набор тестов быстрее, но сейчас это нереалистичная опция c.)

В идеале, я хотел бы указать выражение grep, чтобы выбрать нужные тесты. В мире JavaScript, Мокко Js и Jest оба поддерживают grepping для выбора тестов по имени или по файлу.

В качестве альтернативы, я был бы в порядке с возможностью указывать файл напрямую - до тех пор, пока я могу делать это с поддержкой «автоматического тестирования».

Вот что я нашел с помощью testthat:

  • testthat :: auto_test_package сначала запускает все, но только повторно запускает указанный c тестовый файл, если вы редактируете этот тестовый файл. Однако если вы отредактируете какой-либо код в папке R, он повторно запустит все тесты.
  • testthat :: auto_test принимает путь к каталогу тестовых файлов для тестирования. Однако testth, похоже, не поддерживает помещение тестов в разные подкаталоги, если вы хотите использовать devtools :: test или testthat :: auto_test_package. Я что-то упустил?
  • testthat :: test_file может запускать тесты из одного файла, но он не поддерживает "автоматический" повторный запуск тестов с изменениями.
  • testthat :: test_dir имеет аргумент фильтра, но он фильтрует только файлы, а не тесты; он также не поддерживает автоматическое повторное выполнение тестов

Версии:

  • R: 3.6.2 (2019-12-12)
  • testthat: 2.3.1

Приложение

Я создал простое хранилище для демонстрации проблемы: https://github.com/generalui/select_testthat_tests

Если вы откроете запустите:

renv::restore()
testthat::auto_test_package()

Это займет вечность, потому что один из тестов медленный. Если я работаю над другими тестами, я хочу пропустить медленные тесты и запускать только те тесты, которые я выбрал. Поиск тестов - это стандартная функция инструментов тестирования, поэтому я уверен, что у R должен быть способ. testthat::test_dir имеет опцию filter для фильтрации файлов, но как вы фильтруете имена тестов и как вы фильтруете с auto_test_package? Я просто не могу найти это.

Как сделать что-то подобное в R:

testthat::auto_test_package(filter = 'double_it')

И запустить его:

  • "double_it(2) == 4"
  • "double_it(3) == 6"

НО НЕ

  • "work_hard returns 'wow'"

Спасибо!

...