繁体   English   中英

在 class function 调用 Python 之前/之后调用方法

[英]Call a method before/after all class function calls in Python

我正在编写自己的测试运行程序/测试框架实现,例如 pytest 或 unittest,但具有并行执行或 web 接口等内置功能。 我现在正在努力的是制作某种 setUp 和 tearDown 方法,每次从 Test Class 调用测试方法时都会调用这些方法。

我已经遇到过这个问题如何在 class function 调用 arguments 之前/之后运行方法?

但老实说,我不理解一半的答案(确实阅读了元类),而且我不知道方法(名称、基数、nmspc)需要什么 arguments。 他们的意思是什么?

还有我的问题,上述问题的答案是否允许在 setUp 方法和测试方法之间传递一些数据?

我想实现这样的目标:

class TestCase(object):

# overridable
def setUp(self):
    pass

# overridable
def tearDown(self):
    pass


class TestSuite(TestCase):

def setUp(self):
    self.text = 'test'

def test_example(self):
    assert self.text.upper() == 'TEST'

def tearDown(self):
    self.text = None

我可能会尝试做类似的事情。 尽管使用元类可能会更干净。

class TestCase():
    def setup(self):
        print("Setting Up")

    def tear_down(self):
        print("Tearing Down")

def setup_teardown(f):
    def new_func(self, *args, **kwargs):
        self.setup()
        m = f(self, *args, **kwargs)
        self.tear_down()
        return m
    return new_func


class TestSuite(TestCase):
    @setup_teardown
    def print(self):
        print("Is it working ?")

if __name__=="__main__":
    l=TestSuite()
    l.print()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM