Я использую pytest для запуска некоторых интеграционных тестов, некоторые из которых требуют симулятора, поэтому я создал прибор pytest для его инициализации.
В симуляторе используется драйвер, предоставленный в другом модуле Python, который я импортирую в conftest.py примерно так:
from foo.bar.sim import Sim
Затем Sim
импортируетдрайвер:
from pc_ble_driver_py import ble_driver as ble_driver
А в ble_driver
базовый модуль в конечном итоге загружается:
_mod = imp.load_module('_pc_ble_driver_sd_api_v3', fp, pathname, description)
Насколько я вижу из отладки, load_module
получает все необходимоезагрузить драйвер правильно. И, на самом деле, если я запустил симулятор от pytest, все просто замечательно. Но когда я пытаюсь загрузить симулятор, выполнив pytest
- когда я хочу использовать симулятор в своих тестах - вызов load_module
приводит к довольно катастрофической ошибке:
[1] 12126 abort pytest tests/test_integration.py
Что за выдумкапродолжается? Почему драйвер не может быть загружен или от имени pytest?
ОБНОВЛЕНИЕ:
В соответствии с рекомендацией, я попытался выполнить тест через gdb
, которыйсамо по себе было чем-то вроде миссии. Пожалуйста, смотрите ниже трассировку стека в точке сбоя. Я не уверен, насколько это полезно, так как я не уверен, что смог правильно использовать отладочную версию Python:
Thread 2 received signal SIGABRT, Aborted.
0x00007fff6515e49a in ?? ()
(gdb) bt
#0 0x00007fff6515e49a in ?? ()
#1 0x00007fff6521b6cb in ?? ()
#2 0x0000000000000003 in ?? ()
#3 0x0000000000000000 in ?? ()