25 lines
1.1 KiB
Python
25 lines
1.1 KiB
Python
import json
|
|
from data.field_tree import FieldTree
|
|
from data.test_case import TestCase, TestSuite, SparkConfig
|
|
from agents.llm import LLMClient
|
|
|
|
P2 = "You are a COBOL test data designer. Given a FieldTree, generate boundary test cases. Output: {\"test_cases\":[{\"id\":\"TC-001\",\"fields\":{\"FIELD\":value},\"coverage_targets\":[\"DP-001\"]}]} JSON only."
|
|
|
|
|
|
class Agent2Data:
|
|
def __init__(self, llm: LLMClient):
|
|
self.llm = llm
|
|
|
|
def design(self, tree: FieldTree, target="boundary", spark_mode=False) -> TestSuite:
|
|
tree_d = {"fields": [{"name": f.name, "pic": f.pic, "usage": f.usage, "length": f.length,
|
|
"decimal": f.decimal, "signed": f.signed} for f in tree.flatten().values()]}
|
|
r = self.llm.call([{"role": "system", "content": P2}, {"role": "user", "content": json.dumps(tree_d)}])
|
|
try:
|
|
tcs = [TestCase(**tc) for tc in json.loads(r).get("test_cases", [])]
|
|
except:
|
|
tcs = [TestCase(id="TC-FALLBACK", fields={"BR-AMT": 0})]
|
|
s = TestSuite(test_cases=tcs)
|
|
if spark_mode:
|
|
s.spark_config = SparkConfig(num_records=1000)
|
|
return s
|