Files
feishu_bitable/test_batch_get.py
2026-03-23 10:45:02 +08:00

45 lines
1.8 KiB
Python

# -*- coding: UTF-8 -*-
import unittest
from unittest.mock import MagicMock, patch
import api
class TestBatchGetChunking(unittest.TestCase):
@patch('api.request')
def test_batch_get_records_chunking(self, mock_request):
# Setup mock client
client = api.Client("https://open.feishu.cn")
access_token = "fake_token"
app_token = "fake_app"
table_id = "fake_table"
# Create 250 record IDs (should result in 3 chunks: 100, 100, 50)
record_ids = [f"rec_{i}" for i in range(250)]
# Mock responses
mock_request.side_effect = [
{'code': 0, 'data': {'records': [{'record_id': f'rec_{i}'} for i in range(0, 100)]}},
{'code': 0, 'data': {'records': [{'record_id': f'rec_{i}'} for i in range(100, 200)]}},
{'code': 0, 'data': {'records': [{'record_id': f'rec_{i}'} for i in range(200, 250)]}},
]
# Call the method
results = client.batch_get_records(access_token, app_token, table_id, record_ids)
# Verify
self.assertEqual(len(results), 250)
self.assertEqual(mock_request.call_count, 3)
# Verify the chunks were passed correctly
first_call_payload = mock_request.call_args_list[0][0][3] # payload is the 4th positional arg
self.assertEqual(len(first_call_payload['record_ids']), 100)
self.assertEqual(first_call_payload['record_ids'][0], "rec_0")
self.assertEqual(first_call_payload['record_ids'][99], "rec_99")
last_call_payload = mock_request.call_args_list[2][0][3]
self.assertEqual(len(last_call_payload['record_ids']), 50)
self.assertEqual(last_call_payload['record_ids'][0], "rec_200")
self.assertEqual(last_call_payload['record_ids'][49], "rec_249")
if __name__ == '__main__':
unittest.main()