Каков наилучший способ модульного тестирования кода, генерирующего изображения?

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


person epoch    schedule 15.08.2010    source источник
comment
На самом деле любой, но смотрите ответ применительно к python/matplotlib.   -  person epoch    schedule 15.08.2010


Ответы (2)


Если этот класс использует стороннюю библиотеку для создания графиков/диаграмм (скажем, matplotlib), вы можете написать тесты для методы, которые генерируют входные данные для библиотеки. Это будет довольно легко.

Если вывод представляет собой изображение, и вы заинтересованы в проверке его свойств, вам придется копать глубже. Внешние атрибуты изображения (размер, высота, формат и т. д.) можно легко проверить, но другие, такие как фактическое содержимое изображения, было бы довольно сложно проверить. ИМХО, не стоило бы заморачиваться.

Если выходные данные не являются двоичными (скажем, SVG), вы можете легко написать тесты, чтобы убедиться, что выходной XML содержит то, что вы ищете.

person Manoj Govindan    schedule 15.08.2010
comment
Действительно, и matplotlib дает для этого хороший декоратор сравнения изображений. - person epoch; 15.08.2010

Метод, который я использовал, состоит в том, чтобы сгенерировать «заведомо исправный» файл, сохранить его в вашем исходном дереве, а затем выполнить двоичное сравнение с ним как часть теста. Если содержимое файла совпадает, вывод не изменился.

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

person devstuff    schedule 15.08.2010