2016-09-01 14 views
0

私は共有ライブラリをboost :: python(C++)で作成しました。 内部のC++関数については、私が動作していることをチェックするユニットテストがあります。 ここでは、私が正しくPythonインターフェイスを実装しているかどうかを確認するためにunit-testを使いたいと思います。 これは私がPythonパッケージunittestを使用して考えることについて考えました。Pythonでboost :: pythonライブラリのユニットテスト

今私のフォルダの設定は、おおよそ次のとおりです。

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) 

は、テストフォルダは、ライブラリのさまざまな側面をテストする小さなPythonモジュールの多くを含む、Pythonインタフェースの構造を反映するいくつかのサブフォルダを持っています。

ので今質問:私はテストに共有ライブラリをimportにはどうすればよい

?私がこれまで試したどのような

test_main.py

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

にあった。しかし、これはテストフォルダ内のモジュールのためには役立ちません。とにかくこのパスをテストコードにハードコーディングするのは面倒なようです。私はまた、テストがそれを再びアンインストールできなかったことを知るために、テストされていないライブラリをインストールしたくありません。

答えて

1

あなたのケースのルートディレクトリにある間にテストを実行することができますprojectpython Test/test_name.pyすることができます。

ビルドライブラリが __init__.pyファイルを持っていることを確認し、テストへの唯一の変更は、あなたが実際に

from build import blah #blah is the component you testing 
#test code here 
+0

を持っていると思いますされていることを確認し、これが私のマシンでは動作しません。私がルートディレクトリにいて、Pythonシェルを開いて、 'import build.blah'と入力すると動作します。しかし、このファイルで 'import build.blah'を使って' python Test/my_test.py'を呼び出しても動作しません。 – NOhs

+0

...あなたのtest.pyは 'from build.blah import blah'を持っているべきです –

+0

これは問題ではありません(私はあなたの提案を試みました)。それは "no module named build"という文句を言う。 'Test/my_test.py'では親フォルダから呼び出されていても' Test'との相対的な関係にあります。 – NOhs

関連する問題