Ресурсы изображений не загружаются при использовании pytest

Я разрабатываю графический интерфейс с PySide, и я создаю растровое изображение из изображений, как это:

PHONE_IMAGE_PATH = "resources/images/phone.png"
self.phone_null = QtGui.QPixmap(GREY_DOT_PATH)
self.phone_null = self.phone_null.scaledToWidth(20)

Это прекрасно работает, когда я запускаю программу, но когда я тестирую ее с помощью py.test, это происходит:

QPixmap::scaleWidth: Pixmap is a null pixmap

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

Я действительно хочу протестировать свой код, и я нигде не могу найти информацию об этой проблеме. У кого-нибудь есть решение моей проблемы?

1 ответ

Решение

Из Википедии:

Напротив, относительный путь начинается с некоторого заданного рабочего каталога, избегая необходимости указывать полный абсолютный путь. Имя файла может рассматриваться как относительный путь, основанный на текущем рабочем каталоге. Если рабочий каталог не является родительским каталогом файла, ошибка файла не найдена, если к файлу обращаются по его имени.

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

Вы можете получить текущее местоположение файла с помощью: __file__
Пример:

main_script_dir = os.path.dirname(__file__)
rel_path = "resources/images/phone.png"
PHONE_IMAGE_PATH = os.path.join(main_script_dir, rel_path)
Другие вопросы по тегам