间谍类实例化和方法

时间:2018-05-19 16:36:29

标签: python python-2.7 unit-testing mocking

我希望能够看到如何实例化类,并且我想看看如何使用该类的方法。我可以完成第一个目标,但是,下面的代码演示了我如何监视方法调用。最后的断言失败了。

import mock

class A:
    def __init__(self, some_arg):
        print("constructor")

    def f(self, some_var):
        print(some_var)

p = mock.patch('__main__.A', wraps=A)
m = p.start()
A = m
a = A('something')
a.f('my_arg')
assert mock.call('something') in m.mock_calls
assert m.method_calls  # This fails, call to f is not tracked

如果我使用autospec = True,我可以看到方法调用,但是实际的方法没有被调用。我想要实际的代码运行,我只是想窥探它。

我无法执行http://wesmckinney.com/blog/spying-with-python-mocks/之类的操作,因为我没有该类的实例。

1 个答案:

答案 0 :(得分:0)

这个https://stackoverflow.com/a/41599695/9816369有一个非常可靠的解决方案。从那以后,我可以这样做:

ON

它可能会更好一点,但这是非常可靠的。我还应该提到https://github.com/beanbaginc/kgb,但我不想修改我正在使用的要求文件。