code: def test_create_snapshot_by_dictionary(self):
      snapshot = self.dal.snapshot.create(
          Snapshot(self.snapshot_input_dict)
      )
      assert snapshot.id
      assert snapshot.model_id == self.snapshot_input_dict["model_id"]
      assert snapshot.message == self.snapshot_input_dict["message"]
      assert snapshot.code_id == self.snapshot_input_dict["code_id"]
      assert (
          snapshot.environment_id
          == self.snapshot_input_dict["environment_id"]
      )
      assert (
          snapshot.file_collection_id
          == self.snapshot_input_dict["file_collection_id"]
      )
      assert snapshot.config == self.snapshot_input_dict["config"]
      assert snapshot.stats == self.snapshot_input_dict["stats"]
      assert snapshot.created_at
      assert snapshot.updated_at
  
      snapshot_2 = self.dal.snapshot.create(
          Snapshot(self.snapshot_input_dict)
      )
  
      assert snapshot_2.id != snapshot.id
  
      test_snapshot_input_dict = self.snapshot_input_dict.copy()
      test_snapshot_input_dict["id"] = "snapshot_id"
      snapshot_3 = self.dal.snapshot.create(
          Snapshot(test_snapshot_input_dict)
      )
  
      assert snapshot_3.id == test_snapshot_input_dict["id"]
  
imports: from __future__ import division
  from __future__ import print_function
  from __future__ import unicode_literals
  import os
  import tempfile
  import platform
  from datmo.core.storage.driver.blitzdb_dal_driver import BlitzDBDALDriver
  from datmo.core.storage.local.dal import LocalDAL
  from datmo.core.entity.model import Model
  from datmo.core.entity.snapshot import Snapshot
  from datmo.core.util.exceptions import EntityNotFound, InvalidArgumentType
label_desc: Use image node_id 3 for calling the TestLocalDAL obj's underlying member method code with example usage: obj.test_create_snapshot_by_dictionary() without return types