Django プロジェクトの pytest を使用してセレンを実行し、フィクスチャのセットアップ/ティアダウンを実行しようとしています。
を使用してベストプラクティスに従おうとしましたyield
が、エラーが発生します。
--- ERROR at setup of test_browsing_check ---
pytest.fixture functions cannot use ``yield``. Instead write and return an inner function/generator and let the consumer call and iterate over it.:
@pytest.fixture(scope="module")
def browser(request):
selenium = webdriver.Firefox()
selenium .implicitly_wait(3)
yield selenium
selenium.quit()
なぜそれが機能していないのか知っていますか?
その後、うまく機能する別のコードを使用しました
@pytest.fixture(scope="module")
def browser(request):
selenium = webdriver.Firefox()
selenium.implicitly_wait(3)
def teardown():
selenium.quit()
request.addfinalizer(teardown)
return selenium
ただし、この方法はお勧めしません。
このメソッドはまだ完全にサポートされていますが、2.10 以降では yield が推奨されています。これは、より単純で自然なコード フローをより適切に説明できると考えられているためです。
バージョンに関する注意:
$ python -V
$ Python 3.5.2 :: Anaconda 4.2.0 (64-bit)
$ django-admin version
$ 1.10.3
$ pip show pytest
$ Name: pytest
$ Version: 2.9.2