google / google/openhtf

Context aware validators

Open
#755 0 comments 0 reactions 0 assignees View on GitHub
discussion feature request
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.