code: def test_properties():
      instance = m.TestProperties()
  
      assert instance.def_readonly == 1
      with pytest.raises(AttributeError):
          instance.def_readonly = 2
  
      instance.def_readwrite = 2
      assert instance.def_readwrite == 2
  
      assert instance.def_property_readonly == 2
      with pytest.raises(AttributeError):
          instance.def_property_readonly = 3
  
      instance.def_property = 3
      assert instance.def_property == 3
  
      with pytest.raises(AttributeError) as excinfo:
          dummy = instance.def_property_writeonly  # unused var
      assert NO_GETTER_MSG in str(excinfo.value)
  
      instance.def_property_writeonly = 4
      assert instance.def_property_readonly == 4
  
      with pytest.raises(AttributeError) as excinfo:
          dummy = (
              instance.def_property_impossible
          )  # noqa: F841 unused var
      assert NO_GETTER_MSG in str(excinfo.value)
  
      with pytest.raises(AttributeError) as excinfo:
          instance.def_property_impossible = 5
      assert NO_SETTER_MSG in str(excinfo.value)
  
imports: import sys
  import pytest
  import env
  from pybind11_tests import ConstructorStats
  from pybind11_tests import methods_and_attributes
label_desc: Use image node_id 3 for calling a global function with example usage: test_properties() without return types