# -*- 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()