小编jay*_*ant的帖子

模拟类并在对方法的调用中进行断言的正确方法

我正在尝试编写单元测试,Bar以便Foo对的方法进行调用read()。我添加了patch命令,setUp()因为其他测试也将使用此补丁。

如何检查该read()函数是否已使用期望的参数调用?

foo.py
class Foo(object):
    def __init__(self):
        self.table = {'foo': 1}

    def read(self, name):
        return self.table[name]
Run Code Online (Sandbox Code Playgroud) bar.py
import foo

class Bar(object):
    def act(self):
        a = foo.Foo()
        return a.read('foo')
Run Code Online (Sandbox Code Playgroud) test_bar.py
import bar
import unittest
from mock import patch

class TestBar(unittest.TestCase):
    def setUp(self):
        self.foo_mock = patch('bar.foo.Foo', autospec=True).start()
        self.addCleanup(patch.stopall)

    def test_can_call_foo_with_correct_arguments(self):
        a = bar.Bar()
        a.act()
        self.foo_mock.read.assert_called_once_with('foo')
Run Code Online (Sandbox Code Playgroud)

输出量

python -m unittest discover
F
======================================================================
FAIL: test_can_call_foo_with_correct_arguments (test_bar.TestBar)
----------------------------------------------------------------------
Traceback (most recent call …
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking python-2.7 python-unittest

4
推荐指数
1
解决办法
2048
查看次数