7-conftest.pyとfixture
7381 ワード
文書ディレクトリ一、conftest.py 二、fixture 一、conftest.py
conftest.pyはfixtureを専用に格納するプロファイルです.ログイン、パラメータの取得など、一般的な前置き操作を中に入れることができます.
注:1、名前はconftestでなければなりません.py 2、役割ドメイン:現在のパッケージのみに作用する3、プロジェクトに複数のconftestが存在する.pyの場合、外部から内部へ、上から下へ有効4、pytestはデフォルトでconftestを実行する.pyにおけるfixture 5、試験用例を実行する場合、conftest.pyは手動でインポートせずに直接使用できます
二、fixture
fixtureは、unittestのsetup/teardownよりも柔軟に、いくつかの特定のインスタンスを実行する前に実行できます.1、fixtureソースの詳細
fixture(scope=‘function’,params=None,autouse=False,ids=None,name=None)
①scope:次の4つのレベルのパラメータがあります. function:デフォルト値、conftestスコープでは、各テストメソッドが実行される前に が実行されます. class:conftest役割ドメインでは、各テストクラスが実行される前に が実行されます. module:conftest役割ドメインでは、各テストモジュールが実行される前に が実行されます. session:conftest役割ドメインでは、各パケットが実行される前に が実行されます.
scopeパラメータ作用範囲fixtureの作用範囲を制御する:session>module>class>function
②params:オプションのパラメータリストです.複数のパラメータがfixture関数を呼び出し、すべてのテストで使用されます.
③autouse:デフォルトのFalse、例を使って手動でこのfixtureを呼び出す必要がある;Trueの場合、すべての役割ドメイン内のテスト・インスタンスが自動的に呼び出されます.
④ids:paramsテストIDの一部.paramsから自動的に生成されない場合
⑤name:デフォルト:装飾器の名前、同じモジュールのfixtureが互いに呼び出して異なるnameを書くことを提案します.
2、使用方法:
①関数名を使用して直接呼び出しますが、戻り値はありません
実行結果:
②関数に戻り値があり、関数名をパラメータとして入力する必要がある
実行結果:
③複数のfixture間で相互に呼び出す場合は、②と同様に関数名を入力するだけでよい
conftest.pyはfixtureを専用に格納するプロファイルです.ログイン、パラメータの取得など、一般的な前置き操作を中に入れることができます.
注:1、名前はconftestでなければなりません.py 2、役割ドメイン:現在のパッケージのみに作用する3、プロジェクトに複数のconftestが存在する.pyの場合、外部から内部へ、上から下へ有効4、pytestはデフォルトでconftestを実行する.pyにおけるfixture 5、試験用例を実行する場合、conftest.pyは手動でインポートせずに直接使用できます
二、fixture
fixtureは、unittestのsetup/teardownよりも柔軟に、いくつかの特定のインスタンスを実行する前に実行できます.1、fixtureソースの詳細
fixture(scope=‘function’,params=None,autouse=False,ids=None,name=None)
①scope:次の4つのレベルのパラメータがあります.
scopeパラメータ作用範囲fixtureの作用範囲を制御する:session>module>class>function
②params:オプションのパラメータリストです.複数のパラメータがfixture関数を呼び出し、すべてのテストで使用されます.
③autouse:デフォルトのFalse、例を使って手動でこのfixtureを呼び出す必要がある;Trueの場合、すべての役割ドメイン内のテスト・インスタンスが自動的に呼び出されます.
④ids:paramsテストIDの一部.paramsから自動的に生成されない場合
⑤name:デフォルト:装飾器の名前、同じモジュールのfixtureが互いに呼び出して異なるnameを書くことを提案します.
2、使用方法:
①関数名を使用して直接呼び出しますが、戻り値はありません
#conftest.py
import pytest
@pytest.fixture()
def login():
print(' ')
#test.py
import pytest
@pytest.mark.usefixtures('login')
def test1():
print("test1 ")
if __name__ == '__main__':
pytest.main(["-s", "test.py"])
実行結果:
test.py
test1
.
def test1(login):
print(login[1])
print("
test1 ")
②関数に戻り値があり、関数名をパラメータとして入力する必要がある
#conftest.py
import pytest
@pytest.fixture()
def login():
a = 1
b = 2
return a,b
#test.py
import pytest
def test1(login):
print(login[0]) # login
print("test1 ")
if __name__ == '__main__':
pytest.main(["-s", "test.py"])
実行結果:
test.py 1
test1
.
③複数のfixture間で相互に呼び出す場合は、②と同様に関数名を入力するだけでよい
#conftest.py
@pytest.fixture(scope='class')
def a_init():
a = 1
return a
@pytest.fixture(scope='class')
def n_init(a_init):
b = a_init+1
return b