Context aware validators
- Dominant language
- Python
- Stars
- 722
- Forks
- 237
- Avg merge
- 11h 31m
- Merged PRs (30d)
- 4
Description
I would like to see the option to have context aware validators that have an instance of the TestApi class. This would allow the validator itself to access previous measurments, test run times etc. I know from issue #622 the current method is to do something like this:
```
@htf.measures(htf.Measurement("written_serial_number_equals_read_serial_number").equals(True))
def test_read_serial_number(test):
written_serial_number = test.get_measurement('written_serial_number')
test.measurements.written_serial_number_equals_read_serial_number = (written_serial_number == read_serial_number())
```
But I would like to see something more like this:
```
class EqualsMeasurment(ContextValidatorBase):
def __init__(self, name):
self.measurment_name = name
def __call__(self, test, value):
assert(isinstance(test, htf.TestApi))
return value == test.get_measurement(self.measurement_name)
@validators.register
def equals_measurement(name):
return EqualsMeasurment(name)
```
Then the syntax for adding a measurement could be like this:
```
@htf.measures(htf.Measurement("read_serial_number").equals_measurement('written_serial_number'))
def test_read_serial_number(test):
test.measurements.read_serial_number = read_serial_number()
```
or maybe this:
```
@htf.measures(htf.Measurement("read_serial_number").equals(measurment('written_serial_number')))
def test_read_serial_number(test):
test.measurements.read_serial_number = read_serial_number()
```
Contributor guide
Assessment
This issue has not been assessed yet.