mirror of
https://github.com/VinciGit00/Scrapegraph-ai.git
synced 2026-07-20 21:10:05 +08:00
test: Update coverage improvement test for tests/test_json_scraper_graph.py
This commit is contained in:
parent
0d9995b297
commit
c9d71af1ef
@ -1,6 +1,6 @@
|
|||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel, Field
|
||||||
from scrapegraphai.graphs.json_scraper_graph import JSONScraperGraph
|
from scrapegraphai.graphs.json_scraper_graph import JSONScraperGraph
|
||||||
from unittest.mock import Mock, patch
|
from unittest.mock import Mock, patch
|
||||||
|
|
||||||
@ -133,4 +133,60 @@ class TestJSONScraperGraph:
|
|||||||
mock_execute.assert_called_once_with({"user_prompt": "Query that produces no answer", "json": "path/to/empty/file.json"})
|
mock_execute.assert_called_once_with({"user_prompt": "Query that produces no answer", "json": "path/to/empty/file.json"})
|
||||||
mock_fetch_node.assert_called_once()
|
mock_fetch_node.assert_called_once()
|
||||||
mock_generate_answer_node.assert_called_once()
|
mock_generate_answer_node.assert_called_once()
|
||||||
|
mock_create_llm.assert_called_once_with({"model": "test-model", "temperature": 0})
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_llm_model(self):
|
||||||
|
return Mock()
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def mock_embedder_model(self):
|
||||||
|
return Mock()
|
||||||
|
|
||||||
|
@patch('scrapegraphai.graphs.json_scraper_graph.FetchNode')
|
||||||
|
@patch('scrapegraphai.graphs.json_scraper_graph.GenerateAnswerNode')
|
||||||
|
@patch.object(JSONScraperGraph, '_create_llm')
|
||||||
|
def test_json_scraper_graph_with_custom_schema(self, mock_create_llm, mock_generate_answer_node, mock_fetch_node, mock_llm_model, mock_embedder_model):
|
||||||
|
"""
|
||||||
|
Test JSONScraperGraph with a custom schema.
|
||||||
|
This test checks if the graph correctly handles a custom schema input
|
||||||
|
and passes it to the GenerateAnswerNode.
|
||||||
|
"""
|
||||||
|
# Define a custom schema
|
||||||
|
class CustomSchema(BaseModel):
|
||||||
|
name: str = Field(..., description="Name of the attraction")
|
||||||
|
description: str = Field(..., description="Description of the attraction")
|
||||||
|
|
||||||
|
# Mock the _create_llm method to return a mock LLM model
|
||||||
|
mock_create_llm.return_value = mock_llm_model
|
||||||
|
|
||||||
|
# Mock the execute method of BaseGraph
|
||||||
|
with patch('scrapegraphai.graphs.json_scraper_graph.BaseGraph.execute') as mock_execute:
|
||||||
|
mock_execute.return_value = ({"answer": "Mocked answer with custom schema"}, {})
|
||||||
|
|
||||||
|
# Create a JSONScraperGraph instance with a custom schema
|
||||||
|
graph = JSONScraperGraph(
|
||||||
|
prompt="List attractions in Chioggia",
|
||||||
|
source="path/to/chioggia.json",
|
||||||
|
config={"llm": {"model": "test-model", "temperature": 0}},
|
||||||
|
schema=CustomSchema
|
||||||
|
)
|
||||||
|
|
||||||
|
# Set mocked embedder model
|
||||||
|
graph.embedder_model = mock_embedder_model
|
||||||
|
|
||||||
|
# Run the graph
|
||||||
|
result = graph.run()
|
||||||
|
|
||||||
|
# Assertions
|
||||||
|
assert result == "Mocked answer with custom schema"
|
||||||
|
assert graph.input_key == "json"
|
||||||
|
mock_execute.assert_called_once_with({"user_prompt": "List attractions in Chioggia", "json": "path/to/chioggia.json"})
|
||||||
|
mock_fetch_node.assert_called_once()
|
||||||
|
mock_generate_answer_node.assert_called_once()
|
||||||
|
|
||||||
|
# Check if the custom schema was passed to GenerateAnswerNode
|
||||||
|
generate_answer_node_call = mock_generate_answer_node.call_args[1]
|
||||||
|
assert generate_answer_node_call['node_config']['schema'] == CustomSchema
|
||||||
|
|
||||||
mock_create_llm.assert_called_once_with({"model": "test-model", "temperature": 0})
|
mock_create_llm.assert_called_once_with({"model": "test-model", "temperature": 0})
|
||||||
Loading…
Reference in New Issue
Block a user