From 7b8cb9b8066dd2e72b0a794befd0375bbcabcf3d Mon Sep 17 00:00:00 2001 From: leavesster <11785335+leavesster@users.noreply.github.com> Date: Sat, 31 Jan 2026 14:25:57 +0800 Subject: [PATCH] fix: compare JSON as dicts instead of strings in test_data String comparison of JSON output depends on field ordering, which can vary across Python versions or JSON implementations. Comparing parsed dicts is more robust. --- oocana/tests/test_data.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/oocana/tests/test_data.py b/oocana/tests/test_data.py index 1b42d43d..50d2f354 100644 --- a/oocana/tests/test_data.py +++ b/oocana/tests/test_data.py @@ -1,6 +1,6 @@ import unittest from oocana import data -from json import dumps as json_dumps +from json import dumps as json_dumps, loads as json_loads class TestData(unittest.TestCase): @@ -63,13 +63,15 @@ def test_dataclass_dumps(self): block_info = data.BlockInfo(**block_info_dict) serialize_block_info = data.dumps(block_info) - self.assertEqual(serialize_block_info, '{"session_id": "session_id_one", "job_id": "job_id_one", "stacks": ["stack1", "stack2"], "block_path": "block_path_one"}') + # Compare as dicts to avoid field order dependency + expected = {"session_id": "session_id_one", "job_id": "job_id_one", "stacks": ["stack1", "stack2"], "block_path": "block_path_one"} + self.assertEqual(json_loads(serialize_block_info), expected) list_serialize_block_info = data.dumps([block_info]) - self.assertEqual(list_serialize_block_info, '[{"session_id": "session_id_one", "job_id": "job_id_one", "stacks": ["stack1", "stack2"], "block_path": "block_path_one"}]') + self.assertEqual(json_loads(list_serialize_block_info), [expected]) key_serialize_block_info = data.dumps({"key": block_info}) - self.assertEqual(key_serialize_block_info, '{"key": {"session_id": "session_id_one", "job_id": "job_id_one", "stacks": ["stack1", "stack2"], "block_path": "block_path_one"}}') + self.assertEqual(json_loads(key_serialize_block_info), {"key": expected}) with self.assertRaises(TypeError): json_dumps(block_info) @@ -85,7 +87,9 @@ def test_dataclass_dumps_with_none(self): block_info = data.BlockInfo(**block_info_dict) serialize_block_info = data.dumps(block_info.block_dict()) - self.assertEqual(serialize_block_info, '{"session_id": "session_id_one", "job_id": "job_id_one", "stacks": ["stack1", "stack2"]}') + # Compare as dicts to avoid field order dependency + expected = {"session_id": "session_id_one", "job_id": "job_id_one", "stacks": ["stack1", "stack2"]} + self.assertEqual(json_loads(serialize_block_info), expected) with self.assertRaises(TypeError): json_dumps(block_info) \ No newline at end of file