Как протестировать дорогую (медленную) функцию

#python #unit-testing #testing #automated-tests

#питон #модульное тестирование #тестирование #автоматизированные тесты

Вопрос:

Все правила, касающиеся модульных тестов, гласят, что каждый тест должен быть читаемым, быстрым и независимым. Однако иногда при тестировании функции, выполнение которой занимает много времени, например функций конвейера ML, таких как функции, связанные с обработкой данных и прогнозированием данных, тестирование может быть довольно медленным. В этих конкретных случаях, как я мог бы протестировать его, следуя надлежащей практике тестирования, если каждый тест займет много времени для обработки, даже если вводится меньше данных, чем обычно, и когда издеваются над уже протестированными функциями?

Подводя итог, как протестировать такие функции, связанные с процессором, как эта:

 def test_a():  r = foo() #cpu-bound  ...  assert(...)  ...  def test_z():  r = foo() #cpu-bound  ...  assert(...)  

Могу ли я даже избежать его вычисления в тех случаях, когда параметры не изменятся?

 r = foo()  def test_a()  assert(...)  ...  def test_z()  assert(...)  

Комментарии:

1. Я бы сказал, используйте приспособление для модуля или сеанса, если вы используете pytest, но я не уверен, что вы используете для тестирования. Ваш код либо является псевдокодом, либо использует какой-либо другой тестовый фреймворк, кроме unittest и pytest.