[英]How to run a method before/after all class function calls with arguments passed?
[英]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.