我有相当复杂的python2.7系统。通常,在子类中,我需要用“pass”来覆盖父类的方法,比如:
class Parent():
def some_method(self, data):
# do something to data here
....
class Child(Parent):
def some_method(self, data):
# Do not touch data, it should remain unchanged
pass那么,我的问题是:是否有一种方法可以用'pass‘语句覆盖该方法?我指的是抽象测试,因为它不知道任何‘数据’:它所拥有的只是子类、方法名称,仅此而已。当然,我可以测试在运行some_method数据之后没有改变,但是考虑到系统的复杂性,有太多的地方可以检查某些东西是否受到了影响,所以我正在寻找一个抽象的解决方案。
UPD是的,我知道这个设计远非完美,但这是一个遗留的问题,所以请我们把系统设计的讨论放在一边,只需注意一点:不要像这样设计您的系统:)
发布于 2015-09-22 11:53:43
因此,到目前为止,我所做的解决方案是(不完全抽象,但对我的情况来说足够抽象):
在测试用例中,调用子类方法故意传递错误类型的值,就像我的示例中没有:
def test_method_pass_statement(self):
test_class = Child()
try:
# If method isn't overridden, this should raise exception
# but check for your case if None doesn't raise exception
test_class.some_method(None)
except <Exception_type>:
# Customise error and message the way you want
raise如果该方法被pass覆盖,则如果参数数目正确,它将使用您传递它的任何内容。
https://stackoverflow.com/questions/32713480
复制相似问题