Pytest(十八)setup和teardown

2022-05-21 10:58:17 浏览数 (1)

系列分享

Pytest系列(一)初次了解

Pytest(二)执行规则以及编写执行多条用例

Pytest(三)Pytest执行命令

Pytest(四)Pytest断言

Pytest(五)标记函数

Pytest(六)跳过测试

Pytest(七) pytest之参数化

Pytest(八) pytest Fixture(一)

Pytest(九) pytest Fixture(二)

Pytest(十) pytest Fixture(三)

Pytest(十一) pytest ini文件

Pytest(十二) Pytest产生测试报告

Pytest(十三)durations统计用例运行时间

Pytest(十四)用例执行顺序

Pytest(十五)重试机制

Pytest(十六)多进程并发执行

Pytest(十七)pytest增加log日志


在unittest中,有setup 和teardown来使用,那么在pytest中也有,来看下如何实现?

代码语言:javascript复制
import pytest

def setup_function():
    print ("setup_function():每个方法之前执行")


def teardown_function():
    print ("teardown_function():每个方法之后执行")


def test_01():
    print ("正在执行test1")
    x = "this"
    assert 'h' in x


def test_02():
    print ("正在执行test2")
    x = "hello"
    assert hasattr(x,"hello")


if __name__=="__main__":
    pytest.main(["-s","test_11.py"])

这样就实现了在方法级别的。执行下,看下结果

那么想要在类前面执行,但是在方法级别不执行setup和teardown。

代码语言:javascript复制
class TestClass(object):
    def setup_class(self):
        print("setup_class(self):每个类之前执行一次")

    def teardown_class(self):
        print("teardown_class(self):每个类之后执行一次")

    def add(self,a, b):
        return a   b

    def test_01(self):
        print("正在执行test1")
        x = "this"
        assert 'h' in x

    def test_add(self):
        print("正在执行test_add()")
        assert self.add(3, 4) == 7

看下执行结果

那么如何实现类中方法级的(setup_method、teardown_method)在每一个方法之前执行一次,在每一个方法之后执行一次和类执行前执行,执行后执行。也就是类级别和方法级别的混合用

代码语言:javascript复制

class TestClass(object):
    def setup_class(self):
        print("setup_class(self):每个类之前执行一次")

    def teardown_class(self):
        print("teardown_class(self):每个类之后执行一次")

    def setup_method(self):
        print("setup_method(self):在每个方法之前执行")

    def teardown_method(self):
        print("teardown_method(self):在每个方法之后执行n")

    def add(self, a, b):
        return a   b

    def test_01(self):
        print("正在执行test1")
        x = "this"
        assert 'h' in x

    def test_add(self):
        print("正在执行test_add()")
        assert self.add(3, 4) == 7

结果如下

这样在方法级别和类级别的setup和teardown就可以了。

最近的分享会在一些技术深度上分享,一些开发框架的教程也会对应的更新出来。

发现问题,解决问题。遇到问题,慢慢解决问题即可。

uml

0 人点赞