Я знаю аналогичные вопросы задавались ранее, но на самом деле они не располагают информацией, которую я ищу - я не спрашиваю о механике создания модульных тестов, но о том, хорошая идея.
Я написал модуль на Python, который содержит объекты, представляющие физические константы и единицы измерения. Многие единицы формируются путем добавления префиксов к базовым единицам - например, из m
я получаю cm
, dm
, mm
, hm
, um
, nm
, pm
и т. д. И то же самое для s
, g
, C
и т. д. Конечно, я написал функцию для этого, поскольку конечный результат составляет более 1000 отдельных единиц, и было бы очень сложно выписать их все вручную ;-) Это работает примерно так (не фактически). код):
def add_unit(name, value):
globals()[name] = value
for pfx, multiplier in prefixes:
globals()[pfx + name] = multiplier * value
add_unit('m', <definition of a meter>)
add_unit('g', <definition of a gram>)
add_unit('s', <definition of a second>)
# etc.
Проблема возникает, когда я хочу написать модульные тесты для этих модулей (без каламбура), чтобы убедиться, что все они имеют правильные значения. Если я напишу код, который автоматически генерирует контрольный пример для каждого модуля в отдельности, любые проблемы, связанные с функцией генерации модуля, вероятно, также обнаружатся в функции генерации теста. Но, учитывая альтернативу (выписывая все 1000+ тестов вручную), должен ли я в любом случае просто написать функцию генерации тестов, проверить ее действительно тщательно и надеяться, что она работает правильно? Или я должен протестировать, скажем, только одну серию единиц (m
, cm
, dm
, km
, nm
, um
и все другие кратные значения счетчика), достаточно, чтобы Вы уверены, что функция генерации устройства работает? Или что-то еще?