大規模なPythonプロジェクトの多数の単体テストをキュレートしています。テストの検出と実行にはnoseを使用します。特定の条件で実行すべきではないテストファイルがいくつかあります。たとえば、Windows(MacとLinuxのみ)で実行してはならないテストモジュールがあるかもしれません。
これが私が使用したいくつかの解決策です:
- Noseの優れた属性プラグインを使用して、テストメソッドまたはクラスに条件をマークします。
- テストメソッドまたはクラスでunittest.skipIf()を使用します
- たとえば、名前に含まれるファイルをスキップするには、 noseのパターン除外を使用します。
windows
1と2についての私の不満は、これらがモジュールのインポートを強制することです。これは少なくとも時間の無駄であり、プラットフォームに依存するインポートがある場合はエラーを引き起こす可能性があります。#3はもろく、テストケースを読んだときにスキップされることがわかりにくいので、私は好きではありません。3つともテストとテストランナーの相互作用に過度に依存しているようです。テスト中のものが欲しいのですが。
テストモジュールの上部で次のようなことをしたいと思います。
"""This module should not be run on Windows"""
import platform
if platform.system() == 'Windows':
<stop reading this module. nothing to see here>
# do the tests.
PythonまたはNoseにモジュールの読み取りを停止するように指示するにはどうすればよいですか?ただし、エラーはありませんか?早期返品に相当する輸入品を探していると思います。