python pytest進級のxunit fixture詳細解
前言
今日はpytestフレームワークとunittestフレームワークは同じfixtureを使っています。unittestを知っている人は、初期化環境と廃棄作業において、unittestがsetUp、tearDown方法を使っていることを知っています。pytestフレームの中にも同様の方法があります。今日は具体的に説明します。
まずはオフィシャル文書の説明を添付します。
1.各クラスのsetup/teardownは何度も多重化できます。
2.対応する初期化関数が失敗またはスキップされた場合、teardownメソッドは実行されません。
3.pytest 4.2の前にxunit fixtureはfixtureの作用規則に従わないので、一つのsessionレベルでパラメータaut=Trueのfixtureの前にsetup_を実行することができます。methodの方法
ただし、これまでのところ、すべてのxunit fixtureはfixtureの実行規則に従っています。
functionレベル
実例
出力結果によってまとめられます。セットアップ_Functionは、各テスト関数の前に初期化動作を実行します。teardownFunctionは各テスト関数の実行後に廃棄作業を実行します。
methodレベル
実例
出力結果によってまとめられます。セットアップ_methodは、各テスト方法の前に初期化動作を実行します。teardownmethodは各テスト方法の実行後に廃棄作業を実行します。そして、方法レベルのfixtureはテストクラスの方法に作用します。
クラスレベル
実例
出力結果によってまとめられます。セットアップ_クラスはテストクラスの実行前に一回の初期化操作を実行します。teardownクラスはテストクラスの実行後に廃棄作業を一回実行します。そして、クラスレベルのfixtureは@classmethodを使って装飾する必要があります。
moduleレベル
実例
出力結果によってまとめられます。セットアップ_moduleはテストファイル全体、つまりモジュール内のテストクラスまたはテスト関数で、テスト方法の実行前に初期化操作を実行します。teardownmoduleはテストファイル全体、つまりモジュール中のテストクラスまたはテスト関数を実行します。
以上がxunit fixtureの4つのレベルですが、実際の仕事ではどのように使うべきかについて練習してみて、理解を深めてこそ、うまくいくと思います。
公式文書を添付します。英語ですが、詳しいです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
今日はpytestフレームワークとunittestフレームワークは同じfixtureを使っています。unittestを知っている人は、初期化環境と廃棄作業において、unittestがsetUp、tearDown方法を使っていることを知っています。pytestフレームの中にも同様の方法があります。今日は具体的に説明します。
まずはオフィシャル文書の説明を添付します。
1.各クラスのsetup/teardownは何度も多重化できます。
2.対応する初期化関数が失敗またはスキップされた場合、teardownメソッドは実行されません。
3.pytest 4.2の前にxunit fixtureはfixtureの作用規則に従わないので、一つのsessionレベルでパラメータaut=Trueのfixtureの前にsetup_を実行することができます。methodの方法
ただし、これまでのところ、すべてのxunit fixtureはfixtureの実行規則に従っています。
functionレベル
実例
def setup_function(function):
print('
--------------------')
print(' ')
print('
--------------------')
def teardown_function(function):
print('
--------------------')
print(' ')
print('
--------------------')
def test_function_1():
print('
1')
def test_function_2():
print('
2')
if __name__ == '__main__':
import pytest
pytest.main(['-sq', 'functionLevel.py'])
出力結果
functionLevel.py
--------------------
--------------------
1
--------------------
--------------------
--------------------
--------------------
2
--------------------
--------------------
[100%]
========================== 2 passed in 0.03 seconds ===========================
説明出力結果によってまとめられます。セットアップ_Functionは、各テスト関数の前に初期化動作を実行します。teardownFunctionは各テスト関数の実行後に廃棄作業を実行します。
methodレベル
実例
class TestMethod(object):
def setup_method(self, method):
print('
--------------------')
print(' ')
print('
--------------------')
def teardown_method(self, method):
print('
--------------------')
print(' ')
print('
--------------------')
def test_method_1(self):
print('
1')
def test_method_2(self):
print('
2')
if __name__ == '__main__':
import pytest
pytest.main(['-sq', 'methodLevel.py'])
出力結果
methodLevel.py
--------------------
--------------------
1
--------------------
--------------------
--------------------
--------------------
2
--------------------
--------------------
[100%]
========================== 2 passed in 0.03 seconds ===========================
説明出力結果によってまとめられます。セットアップ_methodは、各テスト方法の前に初期化動作を実行します。teardownmethodは各テスト方法の実行後に廃棄作業を実行します。そして、方法レベルのfixtureはテストクラスの方法に作用します。
クラスレベル
実例
class TestClass(object):
@classmethod
def setup_class(cls):
print('
setup_class() for {}'.format(cls.__name__))
@classmethod
def teardown_class(cls):
print('
teardown_class() for {}'.format(cls.__name__))
def test_1(self):
print('self.test_1()')
def test_2(self):
print('self.test_2()')
if __name__ == '__main__':
import pytest
pytest.main(['-sq', 'classLevel.py'])
出力結果
classLevel.py
setup_class() for TestClass
.self.test_1()
.self.test_2()
teardown_class() for TestClass
[100%]
========================== 2 passed in 0.06 seconds ===========================
説明出力結果によってまとめられます。セットアップ_クラスはテストクラスの実行前に一回の初期化操作を実行します。teardownクラスはテストクラスの実行後に廃棄作業を一回実行します。そして、クラスレベルのfixtureは@classmethodを使って装飾する必要があります。
moduleレベル
実例
def setup_module(module):
print('
setup_module() for {}'.format(module.__name__))
def teardown_module(module):
print('
teardown_module() for {}'.format(module.__name__))
def test_1():
print('test_1()')
def test_2():
print('test_2()')
class TestClass(object):
def test_3(self):
print('self.test_3()')
def test_4(self):
print('self.test_4()')
if __name__ == '__main__':
import pytest
pytest.main(['-sq', 'moduleLevel.py'])
出力結果
moduleLevel.py
setup_module() for moduleLevel
.test_1()
.test_2()
.self.test_3()
.self.test_4()
teardown_module() for moduleLevel
[100%]
========================== 4 passed in 0.04 seconds ===========================
説明出力結果によってまとめられます。セットアップ_moduleはテストファイル全体、つまりモジュール内のテストクラスまたはテスト関数で、テスト方法の実行前に初期化操作を実行します。teardownmoduleはテストファイル全体、つまりモジュール中のテストクラスまたはテスト関数を実行します。
以上がxunit fixtureの4つのレベルですが、実際の仕事ではどのように使うべきかについて練習してみて、理解を深めてこそ、うまくいくと思います。
公式文書を添付します。英語ですが、詳しいです。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。