Ресурсы изображений не загружаются при использовании 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.тест это происходит:

QPixmap::scaleWidth: Pixmap is a null pixmap

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

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

1 6

1 ответ:

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

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

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

Вы можете получить текущее местоположение файла с помощью: __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)