Pytest測試框架(二):pytest 的setup/teardown方法

PyTest支援xUnit style 結構, setup() 和 teardown() 方法用於初始化和清理測試環境,可以保證測試用例的獨立性。pytest的setup/teardown方法包括:模組級別(setup_module/teardown_module)、函數級別(setup_function/teardown_function)、類級別(setup_class/ teardown_class)、方法級別(setup_method/teardown_methond或者setup/teardown)。

模組級別

模組中的第一個測試用例開始前執行setup_module方法,模組中的最後一個測試用例結束後運行teardown_module方法。

import pytest

def setup_module():
    print("初始化。。。")

def teardown_module():
    print("清理。。。")

class Test_Demo():
    def test_case1(self):
        print("開始執行測試用例1")
        assert 1 + 1 == 2

    def test_case2(self):
        print("開始執行測試用例2")
        assert 2 + 8 == 10

    def test_case3(self):
        print("開始執行測試用例3")
        assert 99 + 1 == 100

結果:

模組初始化。。。
PASSED                     [ 33%]開始執行測試用例1
PASSED                     [ 66%]開始執行測試用例2
PASSED                     [100%]開始執行測試用例3
模組清理。。。

函數級別

setup_function/teardown_function在每個測試函數前後運行,只對函數用例生效,不在類中。

import pytest

def setup_function():
    print("初始化。。。")

def teardown_function():
    print("清理。。。")

def test_case1():
    print("開始執行測試用例1")
    assert 1 + 1 == 2

def test_case2():
    print("開始執行測試用例2")
    assert 2 + 8 == 10

def test_case3():
    print("開始執行測試用例3")
    assert 99 + 1 == 100

結果:

test_setup_teardown2.py::test_case1 初始化。。。
PASSED                               [ 33%]開始執行測試用例1
清理。。。

test_setup_teardown2.py::test_case2 初始化。。。
PASSED                               [ 66%]開始執行測試用例2
清理。。。

test_setup_teardown2.py::test_case3 初始化。。。
PASSED                               [100%]開始執行測試用例3
清理。。。

類級別

類級別函數 setup_class/teardown_class 對類有效,位於類中,在測試類中前後調用一次。

class Test_Demo():
    def setup_class(self):
        print("初始化。。。")

    def teardown_class(self):
        print("清理。。。")

    def test_case1(self):
        print("開始執行測試用例1")
        assert 1 + 1 == 2

    def test_case2(self):
        print("開始執行測試用例2")
        assert 2 + 8 == 10

    def test_case3(self):
        print("開始執行測試用例3")
        assert 99 + 1 == 100

結果:

初始化。。。
PASSED                    [ 33%]開始執行測試用例1
PASSED                    [ 66%]開始執行測試用例2
PASSED                    [100%]開始執行測試用例3
清理。。。

方法級別

方法級別函數 setup_method/teardown_method和setup/teardown對類有效,也位於類中,這兩個效果一樣,在測試類中每個測試方法前後調用一次。

class Test_Demo():
    def setup_method(self):
        print("初始化。。。")

    def teardown_method(self):
        print("清理。。。")

    def test_case1(self):
        print("開始執行測試用例1")
        assert 1 + 1 == 2

    def test_case2(self):
        print("開始執行測試用例2")
        assert 2 + 8 == 10

    def test_case3(self):
        print("開始執行測試用例3")
        assert 99 + 1 == 100

結果:

初始化。。。
PASSED                    [ 33%]開始執行測試用例1
清理。。。
初始化。。。
PASSED                    [ 66%]開始執行測試用例2
清理。。。
初始化。。。
PASSED                    [100%]開始執行測試用例3
清理。。。

–THE END–

文章標題:Pytest測試框架(二):pytest 的setup/teardown方法
本文作者:hiyo
本文鏈接://hiyong.gitee.io/posts/pytest-xunit-style-of-setup-teardown/
歡迎關注公眾號:「測試開發小記」及時接收最新技術文章!