1. ホーム
  2. python

[解決済み] py.testを使用して、テストディレクトリにパッケージを作成せずに、テストでヘルパー関数を作成し、インポートします。

2023-05-10 16:36:35

質問

質問

でパッケージを作成せずに、テストファイル内のヘルパー関数をインポートするにはどうしたらよいでしょうか。 test ディレクトリにパッケージを作成せずに、テストファイルをインポートするにはどうしたらよいでしょうか?



コンテキスト

私は、いくつかのテストでインポートできるテストヘルパー関数を作成したいと思います。 例えば、このようなものです。

# In common_file.py

def assert_a_general_property_between(x, y):
    # test a specific relationship between x and y
    assert ...


# In test/my_test.py

def test_something_with(x):
    some_value = some_function_of_(x)
    assert_a_general_property_between(x, some_value)

Python 3.5 と py.test 2.8.2 を使用します。



現在の "ソリューション"。

私は現在、プロジェクト内のモジュールをインポートすることでこれを行なっています。 test ディレクトリ (これは現在パッケージになっています) 内のモジュールをインポートすることで行っていますが、可能であれば他のメカニズムで行いたいと考えています (そうすれば、私の test ディレクトリにはパッケージはなくテストだけがあり、テストは推奨されているようにインストールされたパッケージのバージョンで実行することができます。 py.testのグッドプラクティスのドキュメントにあるように、インストールされたパッケージのバージョンでテストを実行することができます。 ).

どのように解決するのですか?

私の選択肢としては tests ディレクトリを作成し、conftest so の pythonpath に追加することです。

tests/
    helpers/
      utils.py
      ...
    conftest.py
setup.cfg

の中に conftest.py

import sys
import os
sys.path.append(os.path.join(os.path.dirname(__file__), 'helpers'))

setup.cfg

[pytest]
norecursedirs=tests/helpers

このモジュールは import utils で利用可能ですが、名前の衝突にだけは注意してください。