text: import numpy as np
  import pytest
  
  from pandas import DataFrame
  
  pytest.importorskip("jinja2")
  from pandas.io.formats.style import Styler
  
  
  @pytest.fixture
  def df():
      return DataFrame(
          data=[[0, 1, 2], [3, 4, 5], [6, 7, 8]],
          columns=["A", "B", "C"],
          index=["x", "y", "z"],
      )
  
  
  @pytest.fixture
  def styler(df):
      return Styler(df, uuid_len=0)
  
  
  @pytest.mark.parametrize(
      "ttips",
      [
          DataFrame(  # Test basic reindex and ignoring blank
              data=[["Min", "Max"], [np.nan, ""]],
              columns=["A", "C"],
              index=["x", "y"],
          ),
          DataFrame(  # Test non-referenced columns, reversed col names, short index
              data=[["Max", "Min", "Bad-Col"]], columns=["C", "A", "D"], index=["x"]
          ),
      ],
  )
  def test_tooltip_render(ttips, styler):
      # GH 21266
      result = styler.set_tooltips(ttips).to_html()
  
      # test tooltip table level class
      assert "#T__ .pd-t {\n  visibility: hidden;\n" in result
  
      # test 'Min' tooltip added
      assert "#T__ #T__row0_col0:hover .pd-t {\n  visibility: visible;\n}" in result
      assert '#T__ #T__row0_col0 .pd-t::after {\n  content: "Min";\n}' in result
      assert 'class="data row0 col0" >0<span class="pd-t"></span></td>' in result
  
      # test 'Max' tooltip added
      assert "#T__ #T__row0_col2:hover .pd-t {\n  visibility: visible;\n}" in result
      assert '#T__ #T__row0_col2 .pd-t::after {\n  content: "Max";\n}' in result
      assert 'class="data row0 col2" >2<span class="pd-t"></span></td>' in result
  
      # test Nan, empty string and bad column ignored
      assert "#T__ #T__row1_col0:hover .pd-t {\n  visibility: visible;\n}" not in result
      assert "#T__ #T__row1_col1:hover .pd-t {\n  visibility: visible;\n}" not in result
      assert "#T__ #T__row0_col1:hover .pd-t {\n  visibility: visible;\n}" not in result
      assert "#T__ #T__row1_col2:hover .pd-t {\n  visibility: visible;\n}" not in result
      assert "Bad-Col" not in result
  
  
  def test_tooltip_ignored(styler):
      # GH 21266
      result = styler.to_html()  # no set_tooltips() creates no <span>
      assert '<style type="text/css">\n</style>' in result
      assert '<span class="pd-t"></span>' not in result
  
  
  def test_tooltip_css_class(styler):
      # GH 21266
      result = styler.set_tooltips(
          DataFrame([["tooltip"]], index=["x"], columns=["A"]),
          css_class="other-class",
          props=[("color", "green")],
      ).to_html()
      assert "#T__ .other-class {\n  color: green;\n" in result
      assert '#T__ #T__row0_col0 .other-class::after {\n  content: "tooltip";\n' in result
  
      # GH 39563
      result = styler.set_tooltips(  # set_tooltips overwrites previous
          DataFrame([["tooltip"]], index=["x"], columns=["A"]),
          css_class="another-class",
          props="color:green;color:red;",
      ).to_html()
      assert "#T__ .another-class {\n  color: green;\n  color: red;\n}" in result
  