3

テストを並行して実行するために、xdist と組み合わせて pytest を使い始めました。私は私のコンテスト.py テスト実行に必要ないくつかのテスト データ ディレクトリ (タイム スタンプ付き) とファイルを作成するための構成フックがあります。xdist を使用するまで、すべて正常に動作します。pytest_configure が最初に実行され、次にプロセスごとに再度実行され、次のようになります。

INTERNALERROR> OSError: [Errno 17] File exists: '/path/to/file'

そして、最終的に n+1 個のディレクトリが作成されます (数秒先)。配布する前に事前にテスト実行を構成する方法はありますか?

編集:ここで私の問題の解決策を見つけたかもしれません。私はまだそれをテストする必要があります。

4

1 に答える 1

4

はい、それで私の問題は解決しました。実装方法のリンクからサンプルコードを追加しました。フィクスチャを使用してslaveinput、マスター プロセスによってのみ書き込まれる dict にデータを挿入していpytest_configureます。

def pytest_configure(config):        
    if is_master(config):
        config.shared_directory = os.makedirs('/tests/runs/')  

def pytest_configure_node(self, node):
    """xdist hook"""
    node.slaveinput['shared_dir'] = node.config.shared_directory

@pytest.fixture
def shared_directory(request):
    if is_master(request.config):
        return request.config.shared_directory
    else:
        return request.config.slaveinput['shared_dir']

def is_master(config):
    """True if the code running the given pytest.config object is running in a xdist master
    node or not running xdist at all.
    """
    return not hasattr(config, 'slaveinput')
于 2016-03-27T21:10:15.057 に答える