Модульное тестирование библиотеки boost::python в python

Итак, у меня есть общая библиотека, созданная с помощью boost::python (C++). Для функций C++ внутри у меня есть юнит-тесты, которые проверяют, что они работают. Теперь я хотел бы использовать юнит-тест, чтобы увидеть, правильно ли я реализовал интерфейс Python. Для этого я подумал об использовании пакета python unittest,

Теперь моя папка настроена примерно так:

project
  |
   -- C++ source (library and boost::python stuff)
  |
   -- build (here the shared library is located)
  |
   -- Test (here I have the python classes that should test the interface)

Папка test содержит несколько подпапок, которые отражают структуру интерфейса python, и содержит множество небольших модулей python, тестирующих различные аспекты библиотеки.

Итак, вопрос сейчас:

Как я import общая библиотека в тест?

То, что я пробовал до сих пор, было в моем test_main.py

import sys
sys.path.insert(0,'../build')

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

1 ответ

Что вы можете сделать, это запустить тесты, пока вы находитесь в корневом каталоге в вашем случае project, Ты можешь сделать python Test/test_name.py, Убедитесь, что ваша библиотека сборки имеет __init__.py файл

Единственное изменение в тесте - это то, что

from build import blah #blah is the component you testing
#test code here
Другие вопросы по тегам