fixbug: unit test
diff --git a/.gitignore b/.gitignore
index 6dd3608f1..a6f45d894 100644
--- a/.gitignore
+++ b/.gitignore
@@ -175,3 +175,4 @@ htmlcov.*
 *.pkl
 *-structure.csv
 *-structure.json
+*.dot
\ No newline at end of file
diff --git a/tests/metagpt/actions/test_skill_action.py b/tests/metagpt/actions/test_skill_action.py
index 0e0d5d5aa..529ed632a 100644
--- a/tests/metagpt/actions/test_skill_action.py
+++ b/tests/metagpt/actions/test_skill_action.py
@@ -6,6 +6,7 @@
 @File    : test_skill_action.py
 @Desc    : Unit tests.
 """
+
 import pytest
 
 from metagpt.actions.skill_action import ArgumentsParingAction, SkillAction
@@ -47,7 +48,11 @@ async def test_parser(self):
         assert args.get("size_type") == "512x512"
 
     @pytest.mark.asyncio
-    async def test_parser_action(self):
+    async def test_parser_action(self, mocker):
+        # mock
+        mock_text_2_image = mocker.patch("metagpt.learn.text_to_image")
+        mock_text_2_image.return_value = "https://mock.com/xxx"
+
         parser_action = ArgumentsParingAction(skill=self.skill, ask="Draw an apple")
         rsp = await parser_action.run()
         assert rsp
@@ -80,7 +85,8 @@ async def test_find_and_call_function_error(self):
     @pytest.mark.asyncio
     async def test_skill_action_error(self):
         action = SkillAction(skill=self.skill, args={})
-        await action.run()
+        rsp = await action.run()
+        assert "Error" in rsp.content
 
 
 if __name__ == "__main__":
diff --git a/tests/metagpt/learn/test_text_to_image.py b/tests/metagpt/learn/test_text_to_image.py
index 760b9d09c..1485df5c6 100644
--- a/tests/metagpt/learn/test_text_to_image.py
+++ b/tests/metagpt/learn/test_text_to_image.py
@@ -12,10 +12,18 @@
 
 from metagpt.config import CONFIG
 from metagpt.learn.text_to_image import text_to_image
+from metagpt.tools.metagpt_text_to_image import MetaGPTText2Image
+from metagpt.tools.openai_text_to_image import OpenAIText2Image
+from metagpt.utils.s3 import S3
 
 
 @pytest.mark.asyncio
-async def test_metagpt_llm():
+async def test_text_to_image(mocker):
+    # mock
+    mocker.patch.object(MetaGPTText2Image, "text_2_image", return_value=b"mock MetaGPTText2Image")
+    mocker.patch.object(OpenAIText2Image, "text_2_image", return_value=b"mock OpenAIText2Image")
+    mocker.patch.object(S3, "cache", return_value="http://mock/s3")
+
     # Prerequisites
     assert CONFIG.METAGPT_TEXT_TO_IMAGE_MODEL_URL
     assert CONFIG.OPENAI_API_KEY

**Features**
- Add mock to unit tests