2016-09-06 3 views
3

python -m unittest discoverを実行する方法を探しています。ディレクトリA、B、Cのテストが見つかります。ただし、ディレクトリA、B、Cにはそれぞれdependenciesという名前のディレクトリがあります。しかし、いくつかのテストがありますが、私は走りたくありません。unittestを実行すると、特定のディレクトリが無視されます。

このためのスクリプトを作成しなくても、これらの制約を満たすテストを実行する方法はありますか?

答えて

-1

python -m unittestは、モジュールディレクトリに下りますが、他のディレクトリにはありません。

それはすぐにディレクトリが(ファイル__init__.pyを含む)モジュールディレクトリである場合は、状況が異なっている結果

>python -m unittest discover -s temp\a 
test_1 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.002s 

OK 

では、以下の構造

temp 
    + a 
    - test_1.py 
    + dependencies 
    - test_a.py 

を試してみました。ここで

temp 
+ a 
    - __init__.py 
    - test_1.py 
    + dependencies 
    - __init__.py 
    - test_a.py 

結果は

>python -m unittest discover -s temp\a 
test_a 
.test_1 
. 
---------------------------------------------------------------------- 
Ran 2 tests in 0.009s 

OK 

あなたが今、あなたのフォルダdependenciesはモジュールディレクトリではないため、それが受け入れられるかどうかに依存するために、この答えの有用でした。

EDIT:pytestを使用してあなたのコメント

うを見た後のオプションで?このテストランナーには、テストを除外するためのコマンド引数が多数あります。

は、あなたが簡単にCLIで--ignore=pathオプションを渡すことで、コレクション中に特定のテストのディレクトリおよびモジュールを無視することができます

がテストコレクション

の間にパスを無視し自分のサイトから

Changing standard (Python) test discoveryを参照してください。 pytestは私の問題を解決することを発見unittestのために渡すために、複数に--ignoreオプション

+0

悲しいことに、それは '__init __。py'ファイルを持っていて、それは違うことはできません:( – lucasnadalutti

0

私は同じ問題に遭遇し、最終的にこれらの便利な引数を見つけることができたことができます。

ここに文書化されていますhttps://docs.python.org/2/library/unittest.html#test-discovery

-s, --start-directory directory 
Directory to start discovery (. default) 

-p, --pattern pattern 
Pattern to match test files (test*.py default) 

だから私はあることを私のコマンドを修正:私は実際に実行するテストの全てが一つのモジュール、テストしているので、

python -m unittest discover -s test 

。また、あなたが見つけるかもしれない残りの部分をすべて無視して、あなたのテストにヒットするだけの理論一致正規表現で-pを使うこともできます。

関連する問題