Scrapegraph-ai/tests/graphs/xml_scraper_openai_test.py
Marco Vinciguerra 7dba46a0e9 add tests
2024-10-09 11:19:09 +02:00

95 lines
2.5 KiB
Python

"""
xml_scraper_test
"""
import os
import pytest
from dotenv import load_dotenv
from scrapegraphai.graphs import XMLScraperGraph
from scrapegraphai.utils import convert_to_csv, convert_to_json, prettify_exec_info
load_dotenv()
# ************************************************
# Define the test fixtures and helpers
# ************************************************
@pytest.fixture
def graph_config():
"""
Configuration for the XMLScraperGraph
"""
openai_key = os.getenv("OPENAI_APIKEY")
return {
"llm": {
"api_key": openai_key,
"model": "openai/gpt-4o",
},
"verbose": False,
}
@pytest.fixture
def xml_content():
"""
Fixture to read the XML file content
"""
FILE_NAME = "inputs/books.xml"
curr_dir = os.path.dirname(os.path.realpath(__file__))
file_path = os.path.join(curr_dir, FILE_NAME)
with open(file_path, 'r', encoding="utf-8") as file:
return file.read()
# ************************************************
# Define the test cases
# ************************************************
def test_xml_scraper_graph(graph_config: dict, xml_content: str):
"""
Test the XMLScraperGraph scraping pipeline
"""
xml_scraper_graph = XMLScraperGraph(
prompt="List me all the authors, title and genres of the books",
source=xml_content, # Pass the XML content
config=graph_config
)
result = xml_scraper_graph.run()
assert result is not None
def test_xml_scraper_execution_info(graph_config: dict, xml_content: str):
"""
Test getting the execution info of XMLScraperGraph
"""
xml_scraper_graph = XMLScraperGraph(
prompt="List me all the authors, title and genres of the books",
source=xml_content, # Pass the XML content
config=graph_config
)
xml_scraper_graph.run()
graph_exec_info = xml_scraper_graph.get_execution_info()
assert graph_exec_info is not None
print(prettify_exec_info(graph_exec_info))
def test_xml_scraper_save_results(graph_config: dict, xml_content: str):
"""
Test saving the results of XMLScraperGraph to CSV and JSON
"""
xml_scraper_graph = XMLScraperGraph(
prompt="List me all the authors, title and genres of the books",
source=xml_content, # Pass the XML content
config=graph_config
)
result = xml_scraper_graph.run()
# Save to csv and json
convert_to_csv(result, "result")
convert_to_json(result, "result")
assert os.path.exists("result.csv")
assert os.path.exists("result.json")