单元测试初始化期间调用的方法?

2024-04-20 03:06:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个像下面这样的课程:

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()编写一个单元测试,如下所示:

^{pr2}$

不幸的是,这行不通,因为单元测试只向方法传递0,而不是传递类实例(对于self参数)和0。除了必须通过类的__init__()间接测试这个验证方法之外,还有其他解决方案吗?在


Tags: 方法selfifobjectinitdef单元测试item
3条回答

如果您没有在方法的主体中使用self,则暗示它可能不需要是类成员。您可以将\u validate_item函数移到模块范围:

def _validate_item(item):
    if item <= 0:
        raise ValueError("item should be positive.")

或者如果它真的必须留在类中,则将方法标记为static:

^{pr2}$

然后你的测试应该像写的那样工作。在

你没有创造一个积极的实例。怎么样

Positive()._validate_item, 0

嗯,通过构造函数测试了\u validate_item()。使用null或负值调用它将引发ValueError异常。在

后退一步,这就是目标不是吗?“要求”是对象不能以零或负值创建。在

现在这是一个人为的例子,所以上面的方法不可能适用于实际的类;另一种可能是,真正有一个专门用于_validate_item()方法的测试,可以是创建一个具有正值的对象,然后对其调用validate_item()。在

相关问题 更多 >