update test cases for serialize_deserialize

This commit is contained in:
stellahsr 2023-11-27 21:13:19 +08:00
parent 4702059caf
commit 0dd63e4b23
10 changed files with 298 additions and 0 deletions

View file

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
# @Date : 11/22/2023 11:48 AM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :

View file

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# @Date : 11/22/2023 11:48 AM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
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()
serialized_data = action.dict()
new_action = Action(**serialized_data)
assert new_action.name == ""
assert new_action.llm == LLM()
assert len(await new_action._aask("who are you")) > 0

View file

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# @Date : 11/26/2023 2:04 PM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
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)
assert "name" in ser_role_dict
assert "_states" in ser_role_dict
assert "_actions" in ser_role_dict
@pytest.mark.asyncio
async def test_architect_deserialize():
role = Architect()
ser_role_dict = role.dict(by_alias=True)
new_role = Architect(**ser_role_dict)
# new_role = Architect.deserialize(ser_role_dict)
assert new_role.name == "Bob"
assert len(new_role._actions) == 1
assert isinstance(new_role._actions[0], Action)
await new_role._actions[0].run(context="write a cli snake game")

View file

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# @Date : 11/26/2023 2:07 PM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
import pytest
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()
ser_role_dict = role.dict(by_alias=True)
new_role = ProductManager(**ser_role_dict)
# new_role = ProductManager().deserialize(ser_role_dict)
assert new_role.name == "Alice"
assert len(new_role._actions) == 1
assert isinstance(new_role._actions[0], Action)
await new_role._actions[0].run([Message(content="write a cli snake game")])

View file

@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
# @Date : 11/26/2023 2:06 PM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
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)
assert "name" in ser_role_dict
assert "_states" in ser_role_dict
assert "_actions" in ser_role_dict
@pytest.mark.asyncio
async def test_project_manager_deserialize():
role = ProjectManager()
ser_role_dict = role.dict(by_alias=True)
new_role = ProjectManager(**ser_role_dict)
# new_role = ProjectManager().deserialize(ser_role_dict)
assert new_role.name == "Eve"
assert len(new_role._actions) == 1
assert isinstance(new_role._actions[0], Action)
await new_role._actions[0].run(context="write a cli snake game")

View file

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
# @Date : 11/23/2023 4:49 PM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
import pytest
from metagpt.roles.role import Role
from metagpt.roles.engineer import Engineer
from metagpt.actions.action import Action
def test_role_serialize():
role = Role()
ser_role_dict = role.dict(by_alias=True)
assert "name" in ser_role_dict
assert "_states" in ser_role_dict
assert "_actions" in ser_role_dict
def test_engineer_serialize():
role = Engineer()
ser_role_dict = role.dict(by_alias=True)
assert "name" in ser_role_dict
assert "_states" in ser_role_dict
assert "_actions" in ser_role_dict
@pytest.mark.asyncio
async def test_engineer_deserialize():
role = Engineer(use_code_review=True)
ser_role_dict = role.dict(by_alias=True)
# new_role = Engineer().deserialize(ser_role_dict)
# 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 len(new_role._actions) == 2
assert isinstance(new_role._actions[0], Action)
assert isinstance(new_role._actions[1], Action)
await new_role._actions[0].run(context="write a cli snake game", filename="test_code")

View file

@ -0,0 +1,47 @@
# -*- coding: utf-8 -*-
# @Date : 11/27/2023 10:07 AM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
import pytest
from metagpt.environment import Environment
from metagpt.schema import Message
from metagpt.software_company import SoftwareCompany
from metagpt.roles import ProjectManager, ProductManager, Architect
def test_env_serialize():
env = Environment()
ser_env_dict = env.dict()
assert "roles" in ser_env_dict
assert "memory" in ser_env_dict
assert "memory" in ser_env_dict
def test_env_deserialize():
env = Environment()
env.publish_message(message=Message(content="test env serialize"))
ser_env_dict = env.dict()
new_env = Environment(**ser_env_dict)
assert len(new_env.roles) == 0
assert new_env.memory.storage[0].content == "test env serialize"
assert len(new_env.history) == 25
def test_softwarecompany_deserialize():
team = SoftwareCompany()
team.hire(
[
ProductManager(),
Architect(),
ProjectManager(),
]
)
assert len(team.environment.get_roles()) == 3
ser_team_dict = team.dict()
new_team = SoftwareCompany(**ser_team_dict)
assert len(new_team.environment.get_roles()) == 3
assert new_team.environment.get_role('Product Manager') is not None
assert new_team.environment.get_role('Product Manager') is not None
assert new_team.environment.get_role('Architect') is not None

View file

@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
# @Date : 11/22/2023 1:47 PM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
import pytest
from metagpt.actions import WritePRD
from metagpt.llm import LLM
from metagpt.schema import Message
def test_action_serialize():
action = WritePRD()
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 = WritePRD()
serialized_data = action.dict()
new_action = WritePRD(**serialized_data)
# 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

View file

@ -0,0 +1,42 @@
# -*- coding: utf-8 -*-
# @Date : 11/23/2023 10:56 AM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
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()
serialized_data = action.dict()
new_action = WriteCode(**serialized_data)
# new_action = WriteCode().deserialize(serialized_data)
assert new_action.name == "WriteCode"
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()
serialized_data = action.dict()
new_action = WriteCodeReview(**serialized_data)
# new_action = WriteCodeReview().deserialize(serialized_data)
code = await WriteCode().run(context="write a cli snake game", filename="test_code")
assert new_action.name == "WriteCodeReview"
assert new_action.llm == LLM()
await new_action.run(context="write a cli snake game", code =code, filename="test_rewrite_code")

View file

@ -0,0 +1,39 @@
# -*- coding: utf-8 -*-
# @Date : 11/22/2023 8:19 PM
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
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()
serialized_data = action.dict()
new_action = WriteDesign().deserialize(serialized_data)
assert new_action.name == ""
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()
serialized_data = action.dict()
new_action = WriteTasks(**serialized_data)
# 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")