code: def test_properties(self, environment):
      session = Session(api_token=environment.user_token)
      project = session.get_project(
          project_qualified_name=environment.project
      )
      experiment = project.create_experiment(
          params={
              "init_text_parameter": "some text",
              "init_number parameter": 42,
              "init_list": [1, 2, 3],
              "init_datetime": datetime.now(),
          },
      )
      experiment.set_property("prop", "some text")
      experiment.set_property("prop_number", 42)
      experiment.set_property("nested/prop", 42)
      experiment.set_property("prop_to_del", 42)
      experiment.set_property("prop_list", [1, 2, 3])
  
      experiment.set_property("prop_datetime", datetime.now())
      experiment.remove_property("prop_to_del")
  
      properties = experiment.get_properties()
      assert properties["prop"] == "some text"
      assert properties["prop_number"] == "42"
      assert properties["nested/prop"] == "42"
      assert "prop_to_del" not in properties
  
file_path: neptune-client/tests/e2e/standard/test_legacy_client.py
imports: from datetime import datetime
  import numpy
  from PIL import Image
  from neptune.legacy import Session
  from tests.e2e.base import fake
  from tests.e2e.utils import tmp_context
label_desc: Use image node_id 3 for calling the TestLegacyClient obj's underlying member method code with example usage: obj.test_properties(environment) without return types