Pytest - セットアップとティアダウン
-
ユースケースを実行するには、事前条件または事後操作 (ユーザーログイン前、データ消去後の操作、その他の操作など) が必要である必要があります。
-
Unittest は 2 つの事前位置 (setup、setupClass) と 2 つの事後位置 (teardown、teardownClass) を提供します。
-
対照的に、pytest は10 個の
setup
sumteardown
メソッドを提供します。-
モジュールレベル: setup_module、teardown_module
-
関数レベル: setup_function、teardown_function、クラスにないメソッド
-
クラスレベル: setup_class、teardown_class
-
メソッドレベル: setup_method、teardown_method
-
ユースケースレベル:セットアップ、ティアダウン
-
test_py.py
import pytest |
|
def setup_module(): |
|
print("\n!!!! setup_module > 整个.py模块开始前只执行一次:打开浏览器/获取cookie !!!!") |
|
def teardown_module(): |
|
print("!!!! teardown_module > 整个.py模块结束后只执行一次:关闭浏览器 !!!!") |
|
def setup_function(): |
|
print("\n### setup_function > 每个函数级别用例开始前都执行 ###") |
|
def teardown_function(): |
|
print("### teardown_function > 每个函数级别用例结束后都执行 ###") |
|
def test_one(): |
|
print("test case 1") |
|
def test_two(): |
|
print("test case 2") |
|
class TestCase(): |
|
def setup_class(self): |
|
print("\n^^^ setup_class > 整个测试类开始前只执行一次 ^^^") |
|
def teardown_class(self): |
|
print("^^^ teardown_class > 整个测试类结束后只执行一次 ^^^") |
|
def setup_method(self): |
|
print("\n=== setup_method > 类里面每个用例执行前都会执行 ===") |
|
def teardown_method(self): |
|
print("=== teardown_method > 类里面每个用例结束后都会执行 ===") |
|
def setup(self): |
|
print("--- setup > 类里面每个用例执行前都会执行 ---") |
|
def teardown(self): |
|
print("--- teardown > 类里面每个用例结束后都会执行 ---") |
|
def test_three(self): |
|
print("test case 3") |
|
def test_four(self): |
|
print("test case 4") |
|
if __name__ == '__main__': |
|
pytest.main(["-q", "-s", "-ra", "test_py.py"]) |
|
-
実行結果はレベルごとに図のとおりです(説明の順序は上から下、レベルは低位から高位の順です)。
-
黄色のボックス: ユースケースレベル [セットアップ、ティアダウン]
-
オレンジ色のボックス: メソッド レベル [setup_method、teardown_method]
-
青いボックス: クラス レベル [setup_class、teardown_class]
-
緑色のボックス: 関数レベル [setup_function、teardown_function]
-
赤枠: モジュールレベル [setup_module、teardown_module]
-