v1: executing-plans 模式生成,54 文件 1320 行 Python
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import json
|
||||
from data.field_tree import FieldTree
|
||||
from data.test_case import TestCase, TestSuite, SparkConfig
|
||||
from agents.llm import LLMClient
|
||||
|
||||
PROMPT_AGENT2 = """You are a COBOL test data designer. Given a FieldTree JSON, generate test data covering boundary values.
|
||||
Output: {"test_cases": [{"id": "TC-001", "fields": {"FIELD_NAME": value, ...}, "coverage_targets": ["DP-001-TRUE"]}]}
|
||||
For each field, generate 1-3 test cases covering: zero, boundary (MAX), typical value. Return valid JSON only."""
|
||||
|
||||
|
||||
class Agent2Data:
|
||||
def __init__(self, llm: LLMClient):
|
||||
self.llm = llm
|
||||
|
||||
def design(self, tree: FieldTree, coverage_target: str = "boundary",
|
||||
spark_mode: bool = False) -> TestSuite:
|
||||
tree_json = {"fields": [{
|
||||
"name": f.name, "level": f.level, "pic": f.pic,
|
||||
"usage": f.usage, "length": f.length, "decimal": f.decimal,
|
||||
"signed": f.signed, "redefines": f.redefines, "occurs": f.occurs
|
||||
} for f in tree.flatten().values()]}
|
||||
|
||||
messages = [
|
||||
{"role": "system", "content": PROMPT_AGENT2},
|
||||
{"role": "user", "content": json.dumps(tree_json)}
|
||||
]
|
||||
raw = self.llm.call(messages)
|
||||
test_cases = self._parse(raw)
|
||||
suite = TestSuite(test_cases=test_cases)
|
||||
if spark_mode:
|
||||
suite.spark_config = SparkConfig(num_records=1000)
|
||||
return suite
|
||||
|
||||
def _parse(self, raw: str) -> list[TestCase]:
|
||||
try:
|
||||
data = json.loads(raw)
|
||||
return [TestCase(**tc) for tc in data.get("test_cases", [])]
|
||||
except (json.JSONDecodeError, KeyError):
|
||||
return [TestCase(id="TC-FALLBACK", fields={"BR-AMT": 0})]
|
||||
Reference in New Issue
Block a user