From c08f6d83d792bc66eafea7d0d1dca61db41b1916 Mon Sep 17 00:00:00 2001 From: better629 Date: Tue, 28 Nov 2023 10:47:19 +0800 Subject: [PATCH] fix role and format ut of serialize_deserialize --- metagpt/roles/role.py | 5 ++--- tests/metagpt/serialize_deserialize/test_actions.py | 2 ++ .../serialize_deserialize/test_architect_deserialize.py | 2 ++ tests/metagpt/serialize_deserialize/test_product_manager.py | 1 + tests/metagpt/serialize_deserialize/test_project_manager.py | 2 ++ tests/metagpt/serialize_deserialize/test_role.py | 2 +- tests/metagpt/serialize_deserialize/test_wrire_prd.py | 4 ++-- tests/metagpt/serialize_deserialize/test_write_code.py | 6 +++++- tests/metagpt/serialize_deserialize/test_write_design.py | 6 +++++- 9 files changed, 22 insertions(+), 8 deletions(-) diff --git a/metagpt/roles/role.py b/metagpt/roles/role.py index 07a78e4bb..f1d7df5e7 100644 --- a/metagpt/roles/role.py +++ b/metagpt/roles/role.py @@ -20,8 +20,6 @@ """ from __future__ import annotations - - from enum import Enum from typing import Iterable, Set, Type from pathlib import Path @@ -30,12 +28,13 @@ from pydantic import BaseModel, Field from metagpt.actions.action import Action, ActionOutput, action_subclass_registry from metagpt.actions.action_node import ActionNode from metagpt.actions.add_requirement import UserRequirement -from metagpt.llm import LLM, HumanProvider +from metagpt.llm import LLM from metagpt.logs import logger from metagpt.schema import Message, MessageQueue from metagpt.utils.common import any_to_str from metagpt.utils.repair_llm_raw_output import extract_state_value_from_output from metagpt.memory import Memory +from metagpt.provider.human_provider import HumanProvider from metagpt.utils.utils import read_json_file, write_json_file, import_class from metagpt.provider.base_gpt_api import BaseGPTAPI from metagpt.const import SERDESER_PATH diff --git a/tests/metagpt/serialize_deserialize/test_actions.py b/tests/metagpt/serialize_deserialize/test_actions.py index e2efa982b..2fec2121a 100644 --- a/tests/metagpt/serialize_deserialize/test_actions.py +++ b/tests/metagpt/serialize_deserialize/test_actions.py @@ -7,12 +7,14 @@ import pytest from metagpt.actions import Action from metagpt.llm import LLM + def test_action_serialize(): action = Action() ser_action_dict = action.dict() assert "name" in ser_action_dict assert "llm" in ser_action_dict + @pytest.mark.asyncio async def test_action_deserialize(): action = Action() diff --git a/tests/metagpt/serialize_deserialize/test_architect_deserialize.py b/tests/metagpt/serialize_deserialize/test_architect_deserialize.py index cff1bbadd..d0ee3bc99 100644 --- a/tests/metagpt/serialize_deserialize/test_architect_deserialize.py +++ b/tests/metagpt/serialize_deserialize/test_architect_deserialize.py @@ -7,6 +7,7 @@ import pytest from metagpt.roles.architect import Architect from metagpt.actions.action import Action + def test_architect_serialize(): role = Architect() ser_role_dict = role.dict(by_alias=True) @@ -14,6 +15,7 @@ def test_architect_serialize(): assert "_states" in ser_role_dict assert "_actions" in ser_role_dict + @pytest.mark.asyncio async def test_architect_deserialize(): role = Architect() diff --git a/tests/metagpt/serialize_deserialize/test_product_manager.py b/tests/metagpt/serialize_deserialize/test_product_manager.py index 978c50e5e..2aed87a28 100644 --- a/tests/metagpt/serialize_deserialize/test_product_manager.py +++ b/tests/metagpt/serialize_deserialize/test_product_manager.py @@ -8,6 +8,7 @@ from metagpt.roles.product_manager import ProductManager from metagpt.actions.action import Action from metagpt.schema import Message + @pytest.mark.asyncio async def test_product_manager_deserialize(): role = ProductManager() diff --git a/tests/metagpt/serialize_deserialize/test_project_manager.py b/tests/metagpt/serialize_deserialize/test_project_manager.py index 590bd8109..fbc0dcc08 100644 --- a/tests/metagpt/serialize_deserialize/test_project_manager.py +++ b/tests/metagpt/serialize_deserialize/test_project_manager.py @@ -7,6 +7,7 @@ import pytest from metagpt.roles.project_manager import ProjectManager from metagpt.actions.action import Action + def test_project_manager_serialize(): role = ProjectManager() ser_role_dict = role.dict(by_alias=True) @@ -14,6 +15,7 @@ def test_project_manager_serialize(): assert "_states" in ser_role_dict assert "_actions" in ser_role_dict + @pytest.mark.asyncio async def test_project_manager_deserialize(): role = ProjectManager() diff --git a/tests/metagpt/serialize_deserialize/test_role.py b/tests/metagpt/serialize_deserialize/test_role.py index 432c9acb7..0e438d1a2 100644 --- a/tests/metagpt/serialize_deserialize/test_role.py +++ b/tests/metagpt/serialize_deserialize/test_role.py @@ -34,7 +34,7 @@ async def test_engineer_deserialize(): # also can be deserialized in this way: new_role = Engineer(**ser_role_dict) assert new_role.name == "Alex" - assert new_role.use_code_review == True + assert new_role.use_code_review is True assert len(new_role._actions) == 2 assert isinstance(new_role._actions[0], Action) assert isinstance(new_role._actions[1], Action) diff --git a/tests/metagpt/serialize_deserialize/test_wrire_prd.py b/tests/metagpt/serialize_deserialize/test_wrire_prd.py index 9b2653820..baa08ed76 100644 --- a/tests/metagpt/serialize_deserialize/test_wrire_prd.py +++ b/tests/metagpt/serialize_deserialize/test_wrire_prd.py @@ -24,5 +24,5 @@ async def test_action_deserialize(): # new_action = WritePRD().deserialize(serialized_data) assert new_action.name == "" assert new_action.llm == LLM() - assert len(await new_action.run([Message(content="write a cli snake game")]))>0 - + assert len(await new_action.run([Message(content="write a cli snake game")])) > 0 + diff --git a/tests/metagpt/serialize_deserialize/test_write_code.py b/tests/metagpt/serialize_deserialize/test_write_code.py index 0b1f1dc7c..9d659caaf 100644 --- a/tests/metagpt/serialize_deserialize/test_write_code.py +++ b/tests/metagpt/serialize_deserialize/test_write_code.py @@ -7,18 +7,21 @@ import pytest from metagpt.actions import WriteCode, WriteCodeReview from metagpt.llm import LLM + def test_write_design_serialize(): action = WriteCode() ser_action_dict = action.dict() assert ser_action_dict["name"] == "WriteCode" assert "llm" in ser_action_dict + def test_write_task_serialize(): action = WriteCodeReview() ser_action_dict = action.dict() assert ser_action_dict["name"] == "WriteCodeReview" assert "llm" in ser_action_dict - + + @pytest.mark.asyncio async def test_write_code_deserialize(): action = WriteCode() @@ -29,6 +32,7 @@ async def test_write_code_deserialize(): assert new_action.llm == LLM() await new_action.run(context="write a cli snake game", filename="test_code") + @pytest.mark.asyncio async def test_write_code_review_deserialize(): action = WriteCodeReview() diff --git a/tests/metagpt/serialize_deserialize/test_write_design.py b/tests/metagpt/serialize_deserialize/test_write_design.py index 56bf78a63..e6e236676 100644 --- a/tests/metagpt/serialize_deserialize/test_write_design.py +++ b/tests/metagpt/serialize_deserialize/test_write_design.py @@ -7,18 +7,21 @@ import pytest from metagpt.actions import WriteDesign, WriteTasks from metagpt.llm import LLM + def test_write_design_serialize(): action = WriteDesign() ser_action_dict = action.dict() assert "name" in ser_action_dict assert "llm" in ser_action_dict + def test_write_task_serialize(): action = WriteTasks() ser_action_dict = action.dict() assert "name" in ser_action_dict assert "llm" in ser_action_dict + @pytest.mark.asyncio async def test_write_design_deserialize(): action = WriteDesign() @@ -28,6 +31,7 @@ async def test_write_design_deserialize(): assert new_action.llm == LLM() await new_action.run(context="write a cli snake game") + @pytest.mark.asyncio async def test_write_task_deserialize(): action = WriteTasks() @@ -36,4 +40,4 @@ async def test_write_task_deserialize(): # new_action = WriteTasks().deserialize(serialized_data) assert new_action.name == "CreateTasks" assert new_action.llm == LLM() - await new_action.run(context="write a cli snake game") \ No newline at end of file + await new_action.run(context="write a cli snake game")