私は、Python で記述されたテスト ケースがあるプロジェクトに取り組んでいます。一部のテスト ケースでは、ほとんどの設定を setUpClass で行い、いくつかの設定は setUp で行います。たとえば、データベースにデータを準備します。データベースなどにデータを入力するヘルパー メソッドがあります。私が望むのは、クラスメソッドとインスタンスメソッドの両方として機能するメソッドです。例えば:
class TestBase(object):
def insertStuff(self, data):
self.cursor.execute(...)
# Usage 1, class
class Test1(TestBase):
@classmethod
def setUpClass(cls):
cls.insertStuff([1, 2, 3])
# Usage 2, instance
class Test2(TestBase):
def setUp(self):
self.insertStuff([1, 2, 3])
insertStuff はクラス メソッドではないため、これは機能しません。これをクラス メソッドに変更すると、使用法 2 が機能しなくなります。
もちろん、クラスまたはインスタンスのいずれかをパラメーターとして受け取る静的メソッドにすることもできますが、それは非常に見苦しく、可能であればより適切な方法で行うことをお勧めします。
少なくとも、考えないようにすることが可能かどうか知りたいです。テストケースを明確で読みやすくしたいのですが、基本クラスに醜い解決策がある場合は、それを受け入れることができます。