web-dev-qa-db-ja.com

鼻はubuntuでテストを見つけることができません

NoseがUbuntu 9.04でテストを見つけられない理由はありますか?

python 2.5.4で鼻0.11.1を使用しています。
ファイル名を明示的に指定した場合にのみ、テストを実行できます。ファイル名を指定しない場合はテストと表示されます。

同じプロジェクトは私のMacでテストをうまく実行するので、私はかなり困惑しています!

52
Sudhir Jonathan

ディレクトリからテストを実行している場合、つまり、

nosetests ... tests/

ここで、testsは私のテストを含むフォルダーの名前であり、別々のpython test関数を.pyモジュールの1つに含めます... nosetestsが認識できるように、関数は 'test'で始まる必要があります。あなたが実行したいテストとしてそれ。

例えば:

 def test_something():
    ...

nosetestsは、このディレクトリで実行されると、この関数を実行します。

 def somethin_to_test():
    ...

しません。

10
MITjanitor

alwaysnoseを使用して取得するもう1つのことは、実行可能ファイルでテストを実行しないことです。それがMac/Ubuntu全体で違いを生む理由は正確にはわかりませんが、一見の価値はあります。

Macでスクリプトが何らかの理由で_chmod +x_を取得していないことを確認してください。取得されている場合は、chmod -x $(find tests/ -name '*.py')で修正してください。

103
David Wolever

同じ問題がありました。私のテストはWindowsでは問題なく実行されましたが、Ubuntuでは実行されませんでした。

Ubuntuで実行する場合:

nosetests -vv --collect-only

実行可能ファイルであるため、テストファイルをスキップしていることがわかります:_Tools/LintControlFiles/test_HgLint.py is executable; skipped

鼻を実行可能ファイルと見なすには、次のように実行します。

nosetests --exe
41
Rocky

@ david-woleverが言ったように、それらはcannotがUbuntuで実行可能であることを確認できます。走る

nosetests -vv --collect-only 

検査されたファイルの詳細を確認します。

17
zahanm

使用 -all-modulesそしてすべてのテストを見つけます。

nosetests --all-modules ./tests

2
georgeok

ノーズのソース、具体的にはselector.pyファイルを調べた後、何が起こっているのかを確認すると、

https://github.com/nose-devs/nose/blob/master/nose/selector.py#L129

wantFileかどうかを確認する場合、_self.matches_が呼び出され、regexに対してmatch検索が実行されます。これは、testMatchとして渡したものです。

この問題は、後で(そして、そのファイル全体を)確認すると発生します。

https://github.com/nose-devs/nose/blob/master/nose/selector.py#L152

wantFunctionに対して、まったく同じタイプのチェックを再度実行します。

これは、パッケージ、コンテナーpyfile、および実際のテストクラス/関数に異なる構造がある場合、あらゆる段階でそれに一致するクレイジーで複雑な正規表現を作成する必要があることを意味します。

私にとってこれを学んだとき、私はパッケージ、コンテナー、およびテスト関数の前に共通のビットを付けることを選択しました。

setests ├── __init__.py ├── setest_area1.py └──── def setest_someblock(): ...

そして、noseコマンドは次のように機能します

_nose --testMatch="setest"_

これにより、期待どおりに機能します。

1
seaders