我来自 C++ 背景,我的 Python 知识非常有限,我需要以下情况的帮助:
背景:
我们有一个软件
SF
,它被集成到一个大型系统S
中,这个系统S
使用 pythonunittest2
作为测试框架(但是经过调整)。具体来说,它实现了一个类A
,该类继承自unittest2
另一个定制的异常处理类B
。然后基于A
. 系统S
仅在 Linux 上可用。然而,这个软件SF
也被用作一个独立的应用程序,它应该只unittest2
在我们在其他平台上测试它时使用,在这种情况下类A
是不可用的。
问题:
我如何在不同的平台上应用不同的测试包?
我可能的解决方案:
我正在考虑基于这个线程实现一个包装类:创建一个包装类来调用现有函数的前置和后置函数?. 该帖子的答案如下:
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 仅供参考。
非常感谢任何输入,如果有助于使自己清楚,我很乐意添加更多信息。谢谢你。