{"version":"1.0","description":"\u30bd\u30fc\u30b9\u3092\u5168\u90e8\u5f35\u308a\u4ed8\u3051\u308b\u306b\u306f\u591a\u304d\u904e\u304e\u305f\u306e\u3067\u3001 \"test\"\u3067\u59cb\u307e\u308b\u30e1\u30bd\u30c3\u30c9\u3092\u547c\u3073\u51fa\u3059\u51e6\u7406\u306e\u90e8\u5206\u306e\u307f\u3002 def run(): for attrs in self.attrs_.items(): name = attrs[0] func = attrs[1] if name[:4] == \"test\": self.setUp() func{self}() # or self.attrs_[func]() self.tearDown() self.report() Python\u3067\u306f dir(), get_attr, set_attr, has_attr\u3092\u4f7f\u3046\u304c\u3001Prothon\u3067\u306f\u30e1\u30bd\u30c3\u30c9/\u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u2026","published":"2004-08-25 00:00:00","author_url":"https://blog.hatena.ne.jp/teamikl/","blog_url":"https://teamikl.hatenadiary.org/","width":"100%","author_name":"teamikl","provider_url":"https://hatena.blog","provider_name":"Hatena Blog","categories":[],"type":"rich","url":"https://teamikl.hatenadiary.org/entry/20040825/p1","image_url":null,"title":" [PrUnit]","blog_title":"Hello world !","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Fteamikl.hatenadiary.org%2Fentry%2F20040825%2Fp1\" title=\" [PrUnit] - Hello world !\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","height":"190"}