前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Pytest(十八)setup和teardown

Pytest(十八)setup和teardown

作者头像
雷子
发布2022-05-21 10:58:17
发布2022-05-21 10:58:17
71500
代码可运行
举报
运行总次数:0
代码可运行

系列分享

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
代码运行次数:0
复制
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
代码运行次数:0
复制
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
代码运行次数:0
复制

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就可以了。

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-04-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 雷子说测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档