1

どうやら私の質問に対する答えは、「ノーズカバレッジの出力を(パッケージではなく)ディレクトリに制限できますか?」--coverage-package=PACKAGEはいいえですが、ディレクトリ内の各 .py ファイルのパッケージ名を使用して、nose にオプションを渡すことができます。

たとえば、ディレクトリに次のものが含まれているとします。

foo.py
bar.py
baz.py

...次に、次のコマンドを使用する必要があります。

nosetests --with-coverage --coverage-package=foo --coverage-package=bar --coverage-package=baz

だから私の質問は、誰かがシェルスクリプトコード(できればshまたはbash)を書いて、現在のディレクトリ内のすべてのファイル名を.py拡張子で取得し、上記のコマンドラインを(.py拡張子を削除して)生成できますか?私の bash スキルはかなり限られています。(私はPythonでそれをやりたいと思っています。)

4

3 に答える 3

13
nosetests --with-coverage $(for f in *.py; do echo --cover-package="${f%.*}"; done)

ここでの秘訣は、パラメーター置換を使用してファイル拡張子を削除することです。

${f%.*}
于 2009-05-12T23:00:58.903 に答える
3

そして、それを正しく行う必要がある場合 (つまり、単語分割によってファイル名が分割されたり、予期しないグロビングによってランダムなファイル名に展開されたりしないようにする必要があります)、配列を使用します。

files=(*.py)
packages=("${files[@]/%.py/}")
nosetests --with-coverage "${packages[@]/#/--coverage-package=}"
于 2009-05-13T07:16:46.423 に答える
2
nosetests --with-coverage `ls *.py|sed -e 's/^/--cover-package=' -e 's/\.py$//'`
于 2009-05-12T23:01:59.773 に答える