execute method
Future<void>
execute({
- required CancelToken cancelToken,
- required TestReport report,
- required TestController tester,
Executes the step. This will iterate from start to end - 1 and place
the current value inside of variableName (or _iterateNum
if not set).
The step will be executed with each iteration.
Implementation
@override
Future<void> execute({
required CancelToken cancelToken,
required TestReport report,
required TestController tester,
}) async {
var end = JsonClass.parseInt(tester.resolveVariable(this.end))!;
var start = JsonClass.parseInt(tester.resolveVariable(this.start), 0)!;
var step = tester.resolveVariable(this.step);
String variableName =
tester.resolveVariable(this.variableName) ?? '_iterateNum';
assert(end > start);
var name = "$id('$start', '$end', '$variableName')";
log(
name,
tester: tester,
);
if (step == null) {
throw Exception('iterate: failing due to no sub-step');
}
var testStep = TestStep.fromDynamic(step);
for (var i = start; i < end; i++) {
if (cancelToken.cancelled == true) {
throw Exception('[CANCELLED]: the step has been cancelled.');
}
var name = "iterate('$start', '$end', '$variableName', '$i')";
log(
name,
tester: tester,
);
tester.setTestVariable(
value: i,
variableName: variableName,
);
await tester.executeStep(
cancelToken: cancelToken,
report: report,
step: testStep,
subStep: true,
);
}
}