0

私が書いている Python のビット (コマンド ラインおよびフィルター テスト ツール: claft ) では、組み込みのテスト スイート ( doctest )を呼び出す簡単な方法が必要であり、次のことを決定しました。

if 'DOCTEST' in os.environ and os.environ['DOCTEST']==sys.argv[0]:
    _runDocTests()
    sys.exit()

したがって、DOCTEST 変数が他のプログラムに設定されている場合は、無視します。実際、これに対する私のテストは次のとおりです: DOCTEST=./claft ./claft または、詳細にしたい場合は、次を使用できます: DOCTEST=./claft VERBOSE=1 ./claft したがって、DOCTEST=./claft を残しても私の環境では、テスト コードは、独自のディレクトリ内からプログラムを呼び出した場合にのみ実行されます。テスト スイートの 1 つに切り替えて、相対 PATH を使用してそれを呼び出すと、この関数を誤ってトリガーすることがなくなります。

他の誰かがこの種の規則を使用しましたか?

環境変数名間の競合を回避するための他の提案やベスト プラクティスは何ですか? テスト ハーネス機能への「非表示」アクセスを提供するには?

(また、claftで遊んでみたい人は、気軽に試してみてください。今のところかなり醜いコードで、ほとんど概念実証に過ぎません。しかし、最小限の機能しかありません。方法を独学する良い方法でもあります。 Mercurial と bitbucket を使用するには、wiki と問題追跡が、claftに関するフィードバックを投稿するのに最適な場所です)。

4

2 に答える 2

3

すでにコマンドライン解析を行っているのに、--selftestオプションを追加してみませんか? そうすれば競合を心配する必要がなくなり、呼び出しが簡単になります。

于 2009-08-15T08:10:32.767 に答える
0

名前空間が環境と競合しないようにするもう1つのハックな方法は、 myprogname_DEBUGなどを探すことです。

于 2009-08-16T20:46:09.030 に答える