Python使用partial测试属性

时间:2014-06-23 06:43:32

标签: python unit-testing functional-programming mocking

我有一个跟随类

的模拟对象
class Book(object):

    def __init__(self):
        self._counter = 1

    @property
    def counter(self):
        _, self._counter = self._counter, self._counter + 1 
        return _

Book具有以下Mock对象

book = Mock(spec = Book, self._counter = 1)

如果计数器不是属性我可以写这样的测试

def test_counter(self):
    book.counter = partial(Book.counter, book)
    self.assertNotEquals(book.counter(), book.counter())

但是因为它是一个属性,上面的策略不起作用,你能建议一个很好的方法来为属性编写测试,因为我必须使用Book类的Mock对象。

1 个答案:

答案 0 :(得分:1)

def test_counter(self):
    book.counter = partial(Book.counter.fget, book)
    self.assertNotEquals(book.counter(), book.counter())