私はユニットテストにかなり慣れていないので、そのベストプラクティスを見つけようとしています。ここで、いくつかのテストを含む基本クラスを継承する単体テストに関連するいくつかの質問を見てきました。次に例を示します。
class TestBase(unittest.TestCase):
# some standard tests
class AnotherTest(TestBase):
# run some more tests in addition to the standard tests
私がコミュニティから集めたのは、実装ごとに個別のテストを作成し、多重継承を使用する方が良いということだと思います。しかし、その基本クラスに実際にテストが含まれていない場合はどうなるでしょうか。他のすべてのテストのヘルパーだけです。たとえば、他のテストのすべてではないにしてもほとんどが使用するいくつかの一般的なメソッドを格納するために使用したいくつかの基本テスト クラスがあるとします。models.py
また、呼び出されたデータベースモデルがあると仮定しましょうContentModel
test_base.py
import webtest
from google.appengine.ext import testbed
from models import ContentModel
class TestBase(unittest.TestCase):
def setUp(self):
self.ContentModel = ContentModel
self.testbed = testbed.Testbed()
self.testbed.activate()
# other useful stuff
def tearDown(self):
self.testbed.deactivate()
def createUser(self, admin=False):
# create a user that may or may not be an admin
# possibly other useful things
これにより、他のすべてのテストで多くの時間を節約できるようです。
another_test.py
from test_base import TestBase
class AnotherTest(TestBase):
def test_something_authorized(self):
self.createUser(admin=True)
# run a test
def test_something_unauthorized(self):
self.createUser(admin=False)
# run a test
def test_some_interaction_with_the_content_model(self):
new_instance = self.ContentModel('foo' = 'bar').put()
# run a test
注: これは、Google アプリ エンジンの webapp2 での私の作業の一部に基づいていますが、ほぼすべての Python Web アプリケーションで同様の状況が発生することを期待しています。
私の質問
他のすべてのテストが継承する便利なメソッド/変数を含むベース/ヘルパー クラスを使用するのは良い習慣ですか、それとも各テスト クラスを「自己完結型」にする必要がありますか?
ありがとう!