我有一个像下面这样的课程:
class Positive(object):
def __init__(self, item):
self._validate_item(item)
self.item = item
def _validate_item(self, item):
if item <= 0:
raise ValueError("item should be positive.")
我想为_validate_item()
编写一个单元测试,如下所示:
不幸的是,这行不通,因为单元测试只向方法传递0,而不是传递类实例(对于self
参数)和0。除了必须通过类的__init__()
间接测试这个验证方法之外,还有其他解决方案吗?在
如果您没有在方法的主体中使用self,则暗示它可能不需要是类成员。您可以将\u validate_item函数移到模块范围:
或者如果它真的必须留在类中,则将方法标记为static:
^{pr2}$然后你的测试应该像写的那样工作。在
你没有创造一个积极的实例。怎么样
嗯,通过构造函数测试了\u validate_item()。使用null或负值调用它将引发ValueError异常。在
后退一步,这就是目标不是吗?“要求”是对象不能以零或负值创建。在
现在这是一个人为的例子,所以上面的方法不可能适用于实际的类;另一种可能是,真正有一个专门用于_validate_item()方法的测试,可以是创建一个具有正值的对象,然后对其调用validate_item()。在
相关问题 更多 >
编程相关推荐