使用模拟进行Google Apps API的单元测试 - 管理目录API
1 个回答
2
我对你提到的Google客户端API自己的模拟库不太熟悉,但我用这个模拟库很容易就能做到:
import mock
class DirectoryHelper():
...
#Real method that calls the API
def get_users(self):
user_list = []
request = self.service.users().list(
customer=self.customer_id,
maxResults=500,
orderBy='email',
fields="nextPageToken,users(id,orgUnitPath,primaryEmail,name(givenName,familyName),agreedToTerms,suspended)"
)
while request:
logging.debug('Retrieving a page of users from directory...')
report_document = request.execute()
if 'users' in report_document:
for user in report_document['users']:
user_list.append(user)
request = self.service.users().list_next(
request, report_document
)
return user_list
#Mock method that simulate the API call
def get_mock_users(self):
return [
{
"id": "12345",
"primaryEmail": "mock@domain.com",
"name": {
"givenName": u"Mock",
"familyName": u"User"
},
"agreedToTerms": True,
"suspended": False,
"orgUnitPath": "/"
}
]
@mock.patch.object(DirectoryHelper, 'get_users', get_mock_users)
def test_sync_apps_users(self):
directory_helper = DirectoryHelper()
self.assertEquals(1, len(directory_helper.get_users()), 'Mock only contain one user')