ベースクラスを作成しようとしています。私のテストに必要な設定が異なります。すべての私のテストをこのベースクラスから継承したい。ランナーとして私はpy.testを使用します。py.testは 'オブジェクト'から継承されないテストを収集しません
しかし、私がそうしようとすると、py.testはBaseクラスから継承したこれらのテストを収集せず、結果としてそれらを実行しません。ドキュメントに有用な情報が見つかりませんでした。
誰かが以前にこのような問題に直面したことはありますか?何か案は?
ありがとうございました。
P.S.テストがオブジェクトから継承されると、すべて正常に動作します。 Py.testそれらを参照し、正しく実行します。
コードの例:
私の基本クラス:
class BaseClass(object):
"""BaseClass"""
def __init__(self):
super(BaseClass, self).__init__()
self.bla = 'bla'
私のテストクラス:
import pytest
from base_class import BaseClass
class TestSmth(BaseClass):
def test_test(self):
test_instatnce = TestSmth()
print test_instatnce.bla
if __name__ == '__main__':
pytest.main([__file__, '-v'])
が出力:
============================= test session starts ==============================
platform darwin -- Python 2.7.2 -- pytest-2.3.3 -- /usr/bin/python
collecting ... collected 0 items
=============================== in 0.01 seconds ===============================
[Finished in 0.4s]
アレックス、 ありがとう!それがまさに私が必要なものです! –
フィクスチャ関数はスコープでソートされるので、すべてのクラススコープのフィクスチャは関数スコープのフィクスチャより前に実行されます。各スコープ内で順序は定義されていませんが、アルファベット順であるかもしれませんが、それは同時に発生します。 – hpk42
@ hpk42、それはクラス内のアルファベット順です。 :)自分で試してみることができます:https://bitbucket.org/alex_okrushko/pytest-class-init-order/commits/e3f316d6597c57e22a82362643197140 –