py.testはどこでどのようにフィクスチャを探しますか?同じフォルダ内の2つのファイルに同じコードがあります。conftest.pyを削除すると、test_conf.pyを実行しているcmdoptが見つかりません(これも同じフォルダーにあります。sonoftest.pyが検索されないのはなぜですか?
# content of test_sample.py
def test_answer(cmdopt):
if cmdopt == "type1":
print ("first")
elif cmdopt == "type2":
print ("second")
assert 0 # to see what was printed
conftest.pyのコンテンツ
import pytest
def pytest_addoption(parser):
parser.addoption("--cmdopt", action="store", default="type1",
help="my option: type1 or type2")
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")
sonoftest.pyの内容
import pytest
def pytest_addoption(parser):
parser.addoption("--cmdopt", action="store", default="type1",
help="my option: type1 or type2")
@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")
ドキュメントは言う
http://pytest.org/latest/fixture.html#fixture-function
- pytestは、test_プレフィックスが原因でtest_ehloを検出します。テスト関数には、smtpという名前の関数引数が必要です。一致するフィクスチャ関数は、smtpという名前のフィクスチャマーク付き関数を探すことによって検出されます。
- smtp()は、インスタンスを作成するために呼び出されます。
- test_ehlo()が呼び出され、テスト関数の最後の行で失敗します。