Files
wehub-resource-sync fbfefa28d3
CodeQL / Analyze (python) (push) Failing after 0s
Release / Build (push) Failing after 1s
Release / Release (push) Waiting to run
Test Suite / Unit Tests (push) Failing after 0s
chore: import upstream snapshot with attribution
2026-07-13 12:18:10 +08:00

104 lines
2.6 KiB
Python

"""
xml_scraper_test
"""
import os
import pytest
from dotenv import load_dotenv
from scrapegraphai.graphs import XMLScraperGraph
from scrapegraphai.utils import export_to_csv, export_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
export_to_csv(result, "result.csv")
export_to_json(result, "result.json")
assert os.path.exists("result.csv")
assert os.path.exists("result.json")