OpenHands/tests/unit/test_observation_serialization.py
Boxuan Li e7b5ddfe06
Add integration test framework with mock llm (#1301)
* Add integration test framework with mock llm

* Fix MonologueAgent and PlannerAgent tests

* Remove adhoc logging

* Use existing logs

* Fix SWEAgent and PlannerAgent

* Check-in test log files

* conftest: look up under test name folder only

* Add docstring to conftest

* Finish dev doc

* Avoid non-determinism

* Remove dependency on llm embedding model

* Init embedding model only for MonologueAgent

* Add adhoc fix for sandbox discrepancy

* Test ssh and exec sandboxes

* CI: fix missing sandbox type

* conftest: Remove hack

* Reword comment for TODO
2024-04-25 10:56:53 -04:00

21 lines
1.2 KiB
Python

from opendevin.observation import observation_from_dict, Observation, CmdOutputObservation
def test_observation_serialization_deserialization():
original_observation_dict = {
'observation': 'run',
'extras': {'exit_code': 0, 'command': 'ls -l', 'command_id': 3},
'message': 'Command `ls -l` executed with exit code 0.',
'content': 'foo.txt',
}
observation_instance = observation_from_dict(original_observation_dict)
assert isinstance(observation_instance, Observation), 'The observation instance should be an instance of Action.'
assert isinstance(observation_instance, CmdOutputObservation), 'The observation instance should be an instance of AgentThinkAction.'
serialized_observation_dict = observation_instance.to_dict()
serialized_observation_memory = observation_instance.to_memory()
assert serialized_observation_dict == original_observation_dict, 'The serialized observation should match the original observation dict.'
original_observation_dict.pop('message')
assert serialized_observation_memory == original_observation_dict, 'The serialized observation in memory should match the original observation dict.'
# Additional tests for various observation subclasses can be included here