Django unittest过滤功能

时间:2015-12-01 14:05:22

标签: django python-3.x mocking python-unittest

我有以下问题:

class Foo(models.Model):
    bars = models.ManyToMany(Bar)

# in a function somewhere else
def bla(bars):
    return Foo.objects.filter(bars__in=bars)

我想测试.filter()时是否使用给定参数调用bla()

我写了这样的测试:

@patch('my_module.models.Foo')
def test_bla(self, FooMock):
    Foo.objects.filter = Mock()
    foo([1, 2])
    Foo.objects.filter.assert_called_with(bars__in=[1, 2])

它以Not called失败。不确定我是否正确地做到了。有人可以帮助我以正确的方式做到这一点吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

我认为问题出在你修补的地方。这会引导您解决问题,我想:

http://alexmarandon.com/articles/python_mock_gotchas/