def METHOD_NAME(self):
    """ Test various permutations of our problem-builder components and title options. """
    # We use a loop within the test rather than DDT, because this is WAY faster
    # since we can bypass the Selenium set-up and teardown
    for display_name, show_title, expected_title in self.test_parameters:
        for qtype in ("mcq", "mrq", "rating", "long_answer"):
            template = getattr(self, qtype + "_template")
            xml = template.format(
                display_name_attr=f'display_name="{display_name}"' if display_name is not None else "",
                show_title_attr=f'show_title="{show_title}"' if show_title is not None else "",
            )
            self.set_scenario_xml(xml)
            pb_element = self.go_to_view()
            if expected_title:
                h4 = pb_element.find_element_by_css_selector('h4')
                self.assertEqual(h4.text, expected_title)
            else:
                # No <h4> element should be present:
                all_h4s = pb_element.find_elements_by_css_selector('h4')
                self.assertEqual(len(all_h4s), 0)