6

私はToxを使用して、開発中のシステムが新しい環境にインストールされたときに正常に動作することを確認しています(+ファイルの健全性チェックsetup.py)。ただし、システムはmemcachedサーバーを使用しており、理想的には、実行ごとに新しいサーバーを生成したいと考えていToxます。

テストを実行する前にプログラムを起動する (そして後でシャットダウンする) 方法はありますか? それともカスタム ランナーを作成する必要がありますか?

編集:テストランナーはpy.test

4

3 に答える 3

10

フィクスチャメカニズムを使用して、py.testでそれを行う最良の方法に関するflubのコメントについて詳しく説明します。次の内容で conftest.py ファイルを作成します。

# content of conftest.py

import pytest, subprocess

@pytest.fixture(scope="session", autouse=True)
def startmemcache(request):
    proc = subprocess.Popen(...)
    request.addfinalizer(proc.kill)

「autouse」フラグは、テストからの参照を必要とせずに、各テスト実行に対してこのフィクスチャがアクティブになることを意味します。ただし、実際には、サブプロセスへの接続の詳細をテストで使用できるようにして、魔法のポート番号を使用する必要がないようにしたい場合があります。その場合は「autouse」を使用せず、memcache に接続するためのフィクスチャ オブジェクトを返し、テスト構成を 1 か所 (フィクスチャ関数) にうまくカプセル化します。さらに多くの例については、ドキュメントを参照してください。

于 2012-11-14T08:35:52.690 に答える
2

これは実際にはのタスクではありませんtoxsetupで使用している実際の単体テストフレームワーク(、、、、 ...)の関数/メソッドでpy.testこれをnose行うことをお勧めします。unitteststox

元のポスターのコメント:

pytest_configureそしてpytest_unconfigure、でconftest.pyスポーン/終了するのに良い場所でした。

于 2012-11-13T13:37:15.560 に答える
1

http://paver.github.com/paver/を使用することをお勧めしますpaver-サーバーの生成とシャットダウン、またはbyの実行中に行う必要がある追加の「その他のシステム管理タスク」に使用することをお勧めします。memcachedsetup.pytox

于 2012-11-13T10:47:32.257 に答える