code: def test_attributes_upon_fitting(df_datetime):
      transformer = DatetimeFeatures()
      transformer.fit(df_datetime)
  
      assert transformer.variables_ == vars_dt
      assert transformer.features_to_extract_ == FEATURES_DEFAULT
      assert transformer.n_features_in_ == df_datetime.shape[1]
  
      transformer = DatetimeFeatures(
          variables="date_obj1", features_to_extract="all"
      )
      transformer.fit(df_datetime)
  
      assert transformer.variables_ == ["date_obj1"]
      assert transformer.features_to_extract_ == FEATURES_SUPPORTED
  
      transformer = DatetimeFeatures(
          variables=["date_obj1", "time_obj"],
          features_to_extract=["year", "quarter_end", "second"],
      )
      transformer.fit(df_datetime)
  
      assert transformer.variables_ == ["date_obj1", "time_obj"]
      assert transformer.features_to_extract_ == [
          "year",
          "quarter_end",
          "second",
      ]
  
imports: import numpy
  import pandas
  import pytest
  from sklearn.exceptions import NotFittedError
  from sklearn.pipeline import Pipeline
  from feature_engine.datetime import DatetimeFeatures
  from feature_engine.datetime._datetime_constants import FEATURES_DEFAULT, FEATURES_SUFFIXES, FEATURES_SUPPORTED
label_desc: Use image node_id 8 for calling a global function with example usage: test_attributes_upon_fitting(df_datetime) without return types