def METHOD_NAME(self):
    """
    Test __str__ method, for full coverage and check that all modules have
    required attributes.
    """
    atts_list = [
        "koAngles_SolarPanel",
        "ko_dtStep",
        "settlingTime",
        "thrust",
        "slewIsp",
        "scMass",
        "slewMass",
        "skMass",
        "twotanks",
        "dryMass",
        "coMass",
        "occulterSep",
        "skIsp",
        "defburnPortion",
        "checkKeepoutEnd",
        "forceStaticEphem",
        "constTOF",
        "occ_dtmin",
        "occ_dtmax",
        "maxdVpct",
        "dVtot",
        "dVmax",
        "flowRate",
        "havejplephem",
        "slewEff",
        "skEff",
    ]
    for mod in self.allmods:
        if "__str__" not in mod.__dict__:
            continue
        with RedirectStreams(stdout=self.dev_null):
            if "SotoStarshade" in mod.__name__:
                obj = mod(f_nStars=4, **copy.deepcopy(self.spec))
            else:
                obj = mod(**copy.deepcopy(self.spec))
        original_stdout = sys.stdout
        sys.stdout = StringIO()
        # call __str__ method
        result = obj.__str__()
        # examine what was printed
        contents = sys.stdout.getvalue()
        self.assertEqual(type(contents), type(""))
        # attributes from ICD
        for att in atts_list:
            self.assertIn(
                att, contents, "{} missing for {}".format(att, mod.__name__)
            )
        sys.stdout.close()
        # it also returns a string, which is not necessary
        self.assertEqual(type(result), type(""))
        # put stdout back
        sys.stdout = original_stdout