pytestこれらのテストはテストファイルに書き込まれ、必要に応じて順番にロードされます。 fixturesに関するドキュメントを参照してください。
あなたの例では、pytestが最初にクラスtestで始まり、モジュールの依存関係が後で読み込まれます。あなたが最初の「モジュール」設定にしたい場合は
は複数の可能性があります
A)module_levelがclass_levelによってパラメータとして使用し、したがって、(pytestmarkが必要とされていない)
import pytest
@pytest.fixture(scope='module')
def module_level(request):
print("module start")
def fin():
print("module end")
request.addfinalizer(fin)
@pytest.fixture(scope='class')
def class_level(request, module_level):
print("class start")
def fin():
print("class end")
request.addfinalizer(fin)
@pytest.mark.usefixtures("class_level")
class TestMyClass:
def test_func(self):
pass
前にロードされていますB)クラス試験の要件としてとして@pytestmark使用し、したがって、フロント
import pytest
pytestmark = pytest.mark.usefixtures("module_level")
@pytest.fixture(scope='module')
def module_level(request):
print("module start")
def fin():
print("module end")
request.addfinalizer(fin)
@pytest.fixture(scope='class')
def class_level(request):
print("class start")
def fin():
print("class end")
request.addfinalizer(fin)
@pytest.mark.usefixtures("class_level")
@pytestmark
class TestMyClass:
def test_func(self):
pass
Cにロードされる)前にセットアップ機能テストクラステスト、これは、それぞれの場合に、 "クラス" の前でmodule_level最初
import pytest
pytestmark = pytest.mark.usefixtures("module_level")
@pytest.fixture(scope='module')
def module_level(request):
print("module start")
def fin():
print("module end")
request.addfinalizer(fin)
@pytest.fixture(scope='class')
def class_level(request):
print("class start")
def fin():
print("class end")
request.addfinalizer(fin)
def test_case():
assert True
@pytest.mark.usefixtures("class_level")
class TestMyClass:
def test_func(self):
pass
この負荷 "モジュール" を実行する(pytest-2.8.7):
A)
::TestMyClass::test_func module start
class start
class end
module end
B)
::TestMyClass::test_func module start
class start
class end
module end
C)
::test_case module start
::TestMyClass::test_func class start
class end
module end