私はpy.test経由で実行されている次のユニットテストコードを持っています。コンストラクターが存在するだけで、py.test -v -sの実行時にクラス全体がスキップされます
0アイテムを収集/ 1スキップ
Py.testのこの動作を誰か説明してもらえますか?
Py.testの動作を理解することに興味があります。コンストラクターは必要ありません。
ありがとう、Zdenek
class TestClassName(object):
def __init__(self):
pass
def setup_method(self, method):
print "setup_method called"
def teardown_method(self, method):
print "teardown_method called"
def test_a(self):
print "test_a called"
assert 1 == 1
def test_b(self):
print "test_b called"
assert 1 == 1
Matti Lyraの回答で既に述べたように、py.testはコンストラクターを持つクラスを意図的にスキップします。これは、クラスがpy.testの構造上の理由でのみ使用され、固有の動作を持たないためです。実際にコードを記述するときは、反対に.__init__()
メソッドを持たないことクラス。そのため、実際にはコンストラクタでクラスをスキップするのが望ましいと思われます。通常、クラスの名前が競合することがあります。
最後に、py.testはテストを実行するためにクラスをインスタンス化する必要があります。コンストラクターが引数をとる場合、コンストラクターをインスタンス化できないため、再度スキップするのが正しいことです。
Py.testのドキュメント says py.testは次の標準テスト検出を実装します。
Test
プレフィックス付きテストクラス(__init__
メソッドなし)[<-ここにあることに注意してください]test_
プレフィックス付きテスト関数またはメソッドはテスト項目ですそのため、コンストラクターが不要というわけではありません。py.testは、コンストラクターhaveを持つクラスを無視するだけです。標準テスト検出を変更するための ガイド もあります。