feat(models): Added TestRunner class
TestRunner orchestrates test execution: - Executor: sends HTTP requests - Extractor: extracts data from responses - Validator: checks assertions - Returns TestResult with pass/fail status
This commit is contained in:
1 parent
b5ae8a1a46
commit
c63f05478a
1 file changed
+38
@@ -0,0 +1,38 @@
|
||||
from .itm import TestModel
|
||||
from .context import Context
|
||||
from .executor import Executor, Response
|
||||
from .extractor import Extractor
|
||||
from .validator import Validator
|
||||
|
||||
|
||||
class StepResult:
|
||||
def __init__(self, name: str, passed: bool, response: Response):
|
||||
self.name = name
|
||||
self.passed = passed
|
||||
self.response = response
|
||||
|
||||
|
||||
class TestResult:
|
||||
def __init__(self, steps: list[StepResult]):
|
||||
self.steps = steps
|
||||
|
||||
@property
|
||||
def passed(self) -> bool:
|
||||
return all(s.passed for s in self.steps)
|
||||
|
||||
|
||||
class TestRunner:
|
||||
def __init__(self, context: Context):
|
||||
self.context = context
|
||||
self.executor = Executor(context)
|
||||
self.extractor = Extractor(context)
|
||||
self.validator = Validator()
|
||||
|
||||
def run(self) -> TestResult:
|
||||
results = []
|
||||
for step in self.context.config.steps:
|
||||
response = self.executor.execute(step.request)
|
||||
self.extractor.extract(step.extract, response)
|
||||
passed = self.validator.validate(step.assert_, response)
|
||||
results.append(StepResult(step.name, passed, response))
|
||||
return TestResult(results)
|
||||
Reference in new issue
Block a user