pytest 的setup/teardown方法

copy于凡晨丹心

setup() 和 teardown() 方法用于初始化和清理测试环境,可以保证测试用例的独立性。

pytest的setup/teardown方法包括:
    模块级别(setup_module/teardown_module)、
    函数级别(setup_function/teardown_function)、
    类级别(setup_class/ teardown_class)、
    方法级别(setup_method/teardown_methond或者setup/teardown)。

pytest中有四只种setup和teardown:
    1、setup_module和teardown_module在整个测试用例所在的文件中所有的方法运行前和运行后运行,只会运行一次;
    2、setup_class和teardown_class则在整个文件中的一次class中所有用例的前后运行;
    3、setup_method和teardown_method在class内的每个方法运行前后运行;
    4、setup_function和teardown_function则是在非class下属的每个测试方法的前后运行;

模块级别
模块中的第一个测试用例开始前执行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
清理。。。
————————————————
版权声明:本文为CSDN博主「凡晨丹心」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Michaelyq1229/article/details/115740760

你可能感兴趣的:(服务器,运维)