この回避策は、セッションレベルのフィクスチャを作成せずに同じ結果を達成しようとします。上記のあなたのコメントに記載されているように、あなたは設定の必要性に答えます。called only once before first test case
です。
conftest.py
を作成し、次の内容を配置します。
import pytest
def pytest_sessionstart(session):
print("Initialising Session Level Settings")
login = "A specialized login"
settings(login).create_settings()
@pytest.fixture()
def get_driver():
print("Get Driver")
@pytest.fixture()
def login(get_driver):
print("Login")
@pytest.fixture()
def settings(login):
print("Settings")
class Setter:
def create_settings(self):
print("[Success] Settings created!")
return Setter()
あなたはその後、以下のようなあなたのテストでこれを使用することができます。
def test_one(settings):
print("Test one...")
def test_two(settings):
print("Test two...")
テストを実行すると、あなたが望んでいたものに近い効果を与える必要があります(私があなたの与えられた情報から今まで推測できるものに基づいて)。
(py362) D:\repo\git\ens_qa>py.test -sv stackoverflow\ScopeWorkaroundTests.py
Initialising Session Level Settings
Settings
[Success] Settings created!
============================= test session starts =============================
platform win32 -- Python 3.6.2, pytest-3.2.1, py-1.4.34, pluggy-0.4.0 -- d:\virtualenv\py362\scripts\python.exe
cachedir: .cache
rootdir: D:\repo\git\ens_qa, inifile:
collected 2 items
stackoverflow/ScopeWorkaroundTests.py::test_one Get Driver
Login
Settings
Test one...
PASSED
stackoverflow/ScopeWorkaroundTests.py::test_two Get Driver
Login
Settings
Test two...
PASSED
========================== 2 passed in 0.05 seconds ===========================
(py362) D:\repo\git\ens_qa>
ドキュメンテーションには「いいえ」と表示されます。ファンクションレベルフィクスチャはセッションレベルのものを使用できますが、それ以外の方法は使用できません。あなたの状況にもっと詳しい情報を追加する必要があるので、私たちはあなたの問題に対する回避策を見つけることができるかもしれません。 – ldiary
問題は、最初のテストケースの前に一度だけ呼び出されるもう一つのフィクスチャが必要なことです。 (セッションまたはモジュール)。しかし、問題は、私はこの治具で 'testのためのデータを作成することに関連するすべての機能を持つ' settings'フィクスチャを使うことができないということです。 –
'get_driver'は関数レベルのフィクスチャです。すべてのテスト関数の' driver'の新しいインスタンスを作成していますか?あるいは、あなたはあなたのセッションスコープの 'setup'フィクスチャで使う' driver'インスタンスと同じものを取得していますか? – ldiary