Почему загрузка драйвера через pytest приводит к SIGABRT? - PullRequest
0 голосов
/ 08 ноября 2019

Я использую 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 ?? ()
...