¿Se puede hacer referencia a los atributos enteros JSON?

Tengo el siguiente esquema JSON que quiero validar y Python unittest.

{
    "properties": {

        "traffic_parameters" {

            "capacity": {

                "oneOf": [
                    {
                        "max_percentage": {

                            "type": "integer",
                            "minimum" : 1,
                            "maximum" : 150
                        },

                        "min_percentage": {

                            "type": "integer",
                            "minimum" : 1,
                            "maximum" : {

                                "$ref": "#/properties/traffic_parameters/capacity/oneOf/max_percentage/minimum"
                            }
                        }
                    },

                    {
                        "percentage_range": {

                            "type": "array",
                            "minItems": 1,
                            "maxItems": 10,
                            "items": {

                                "type": "integer"
                            }
                        }
                    }
                ]
            }
        }
    }
}

Usando jsonschema valido todo el archivo de esquema OK. Sin embargo, al escribir pruebas unitarias obtengo el siguiente error;

capacity = {'oneOf': [{'max_percentage': {'type': 'integer', 'minimum': 1, 'maximum': 150}, 'min_percentage': {'type': 'integer', 'minimum': 1, 'maximum': {'$ref': '#/properties/traffic_parameters/capacity/oneOf/max_percentage/minimum'}}}, {'percentage_range': {'type': 'array', 'minItems': 1, 'maxItems': 10, 'items': {'type': 'integer'}}}]}
-----------------------------------------
index0 = {'max_percentage': {'type': 'integer', 'minimum': 1, 'maximum': 150}, 'min_percentage': {'type': 'integer', 'minimum': 1, 'maximum': {'$ref': '#/properties/traffic_parameters/capacity/oneOf/max_percentage/minimum'}}}
-----------------------------------------
min_percentage = {'type': 'integer', 'minimum': 1, 'maximum': {'$ref': '#/properties/traffic_parameters/capacity/oneOf/max_percentage/minimum'}}
E.........
======================================================================
ERROR: test_invalid_minimum__traffic_parameters__capacity__min_percentage (__main__.SchemaTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test_test-variables_schema.py", line 160, in test_invalid_minimum__traffic_parameters__capacity__min_percentage
    validate(0, min_percentage)
  File "/local/tools/PACKAGES/python3/lib/python3.6/site-packages/jsonschema/validators.py", line 540, in validate
    cls.check_schema(schema)
  File "/local/tools/PACKAGES/python3/lib/python3.6/site-packages/jsonschema/validators.py", line 83, in check_schema
    raise SchemaError.create_from(error)
jsonschema.exceptions.SchemaError: {'$ref': '#/properties/traffic_parameters/capacity/oneOf/max_percentage/minimum'} is not of type 'number'

Failed validating 'type' in schema['properties']['maximum']:
    {'type': 'number'}

On instance['maximum']:
{'$ref': '#/properties/traffic_parameters/capacity/oneOf/max_percentage/minimum'}


    FAILED (errors=1)

Mi prueba son pruebas unitarias de Python que prueban el mínimo y el máximo del atributo. El máximo es una referencia a otro atributo definido directamente arriba.

La prueba que se muestra prueba el mínimo, pero es el valor máximo el que está en error. El error sería el mismo si estuviera probando el máximo, es justo en lo que estaba trabajando.

Intenté volver a especificar el tipo como "entero" para "máximo" pero el error persiste.

¿Cómo puedo superar este error sin cambiar el tipo de atributo? La referencia es importante porque quiero que el máximo de este atributo esté directamente relacionado con el mínimo del atributo anterior.

Además, ¿hay otra manera (más fácil) de hacer referencia a estas variables en las pruebas unitarias?

Aquí está la función

def test_invalid_minimum__traffic_parameters__capacity__min_percentage(self):
    global test_schema

    capacity = test_schema["traffic_parameters"]["capacity"]
    print ("capacity = " + str(capacity))
    print ("-----------------------------------------")

    index0 = capacity["oneOf"][0]
    print ("index0 = " + str(index0))
    print ("-----------------------------------------")

    min_percentage = index0["min_percentage"]
    print ("min_percentage = " + str(min_percentage))

    with self.assertRaises(ValidationError ):
        validate(0, min_percentage)

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta