code: def test_propert_raciton_property(self):
      class A(Configurable):
          fraction = ProperFractionProperty()
  
      a = A()
  
      valid_values = [0, 0.5, 1 / 3.0, 1]
      for valid_value in valid_values:
          a.fraction = valid_value
  
      invalid_values = [10, 1 + 1e-10, 0 - 1e-10, "test"]
      for invalid_value in invalid_values:
          msg = "Specified value: {}".format(invalid_value)
          with self.assertRaises((ValueError, TypeError), msg=msg):
              a.fraction = invalid_value
  
imports: from collections import namedtuple
  import numpy
  from neupy.core.config import Configurable
  from neupy.core.properties import Property, ArrayProperty, TypedListProperty, BoundedProperty, ProperFractionProperty, NumberProperty, IntProperty, ChoiceProperty, WithdrawProperty
  from base import BaseTestCase
label_desc: Use image node_id 2 for calling the BoundedPropertiesTestCase obj's underlying member method code with example usage: obj.test_propert_raciton_property() without return types