我来自C ++背景,我的Python知识非常有限,我需要以下情况的帮助:
背景:
我们有一个软件
SF
,它集成到一个大型系统S
中,这个系统S
使用pythonunittest2
作为测试框架(无论如何调整)。具体来说,它实现了一个类A
,它继承自unittest2
和另一个自定义的异常处理类B
。然后,所有测试都基于A
实施。系统S
仅适用于Linux。但是,此软件SF
也用作独立应用程序,当我们在其他平台上测试时,它应该只使用unittest2
,在这种情况下,类A
不可用。
问题:
我如何在不同平台上应用不同的测试包?
我可能的解决方案:
我正在考虑基于这个线程实现一个包装类:Create a wrapper class to call a pre and post function around existing functions?。该帖子的答案如下:
class Wrapper(object):
def __init__(self,wrapped_class):
self.wrapped_class = wrapped_class()
def __getattr__(self,attr):
orig_attr = self.wrapped_class.__getattribute__(attr)
if callable(orig_attr):
def hooked(*args, **kwargs):
self.pre()
result = orig_attr(*args, **kwargs)
# prevent wrapped_class from becoming unwrapped
if result == self.wrapped_class:
return self
self.post()
return result
return hooked
else:
return orig_attr
但是,我不认为上面的线程是相关的,因为它处理类的成员函数周围的包装器,而我想要一些包装不同的测试包的包装类。是否可以在Python中执行此操作?我使用的是Python 2.7 FYI。
非常感谢任何输入,如果有助于让自己清楚,我很乐意添加更多信息。谢谢。