ReviewBoard API 라이브러리를 사용하고 오늘 코드를 분리 클래스로 옮겨 일부 테스트를 통해 로직을 커버하고자했습니다. 나는 mock과 testing을 이해하지만 파이썬과 라이브러리에 대해서는별로 경험하지 못했습니다.비평과 모의를 사용하여 ReviewBoard 제 3 자 라이브러리를 비웃음
<!-- language: python -->
from rbtools.api.client import RBClient
class ReviewBoardWrapper():
def __init__(self, url, username, password):
self.url = url
self.username = username
self.password = password
pass
def Connect(self):
self.client = RBClient(self.url, username=self.username, password=self.password)
self.root = self.client.get_root()
pass
그리고 초기화뿐만 아니라 get_root() 메소드가 호출을 주장 할 다음은 실제 코드의 덩어리입니다. I가 붙어 오류
<!-- language: python -->
import unittest
import mock
from module_base import ReviewBoardWrapper as rb
class RbTestCase(unittest.TestCase):
@mock.patch('module_base.RBClient')
@mock.patch('module_base.RBClient.get_root')
def test_client_connect(self, mock_client, mock_method):
rb_client = rb('', '', '')
rb_client.Connect()
self.assertTrue(mock_method.called)
self.assertTrue(mock_client.called)
을 그리고 여기 : 내가 잘못합니까 무엇
$ python -m unittest module_base_tests
F.
======================================================================
FAIL: test_client_connect (module_base_tests.RbTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/mock/mock.py", line 1305, in patched
return func(*args, **keywargs)
File "module_base_tests.py", line 21, in test_client_connect
self.assertTrue(mock_client.called)
AssertionError: False is not true
----------------------------------------------------------------------
Ran 2 tests in 0.002s
FAILED (failures=1)
여기에 내가 그것을 달성하려고하는 방법은? 가져온 라이브러리의 "로컬 복사본"을 올바르게 조롱합니까? 문제가 다른 지역에 완전히 있습니까?
@mock.patch('module_base.RBClient.__init__')
그리고/또는이 :
가 나는 또한이 일을 시도 게시물의 예에서self.assertTrue(mock_client.__init__.called)
: 리턴 값을 조롱하고 반환 값에 대한 주장을 만드는 예는 다음 싶습니다 assertTrue (mock_method.return_value.called) – qlf00n