class_docstr: test GridspecLayout
code: def test_init(self):
      with pytest.raises(traitlets.TraitError):
          box = widgets.GridspecLayout()
  
      with pytest.raises(traitlets.TraitError):
          box = widgets.GridspecLayout(n_rows=-1, n_columns=1)
  
      box = widgets.GridspecLayout(n_rows=5, n_columns=3)
      assert box.n_rows == 5
      assert box.n_columns == 3
      assert len(box._grid_template_areas) == 5
      assert len(box._grid_template_areas[0]) == 3
  
      box = widgets.GridspecLayout(1, 2)
      assert box.n_rows == 1
      assert box.n_columns == 2
  
      with pytest.raises(traitlets.TraitError):
          box = widgets.GridspecLayout(0, 0)
  
imports: from unittest import TestCase
  from unittest import mock
  import pytest
  import traitlets
  import ipywidgets
  from ipywidgets.widgets.widget_templates import LayoutProperties
label_desc: Use image node_id 1 for calling the TestGridspecLayout obj's underlying member method code with example usage: obj.test_init() without return types