3

Python クラス階層が与えられた場合、たとえば

class Base:
    def method1
    def method2
    def method3
    ...
class Derived1(Base)
class Derived2(Base)

Base が、各 Derived クラスで異なる方法で再実装されるいくつかの共通インターフェイスを定義しているとします。すべてのクラスのすべてのメンバー関数を単体テストする最も簡単な方法は何でしょうか。クラス階層があるので、次のようなことを考えました...

class MyTestCase(unittest.TestCase):
    def testMethod1:
        ## Just as an example. Can be similar
        self.failUnless(self.instance.method1())
    def testMethod2
    ...

そして、クラス階層のさまざまなインスタンス化のテスト ケースを使用してテスト スイートをセットアップします。

4

2 に答える 2

1

デコレーターはすべてのskipサブクラスと基本クラスに適用されるため、単に unittest に基本をスキップするように指示することはできません。最も簡単な方法は、基本テスト クラスを TestCase から派生させないことです。

import unittest

class Base: pass
class Derived1(Base): pass

class BaseTest(object):
    cls = None

    def setUp(self):
        self.instance = self.cls()

    def test_Method1(self):
        print("run test_Method1, cls={}".format(self.cls))

class TestParent(BaseTest, unittest.TestCase):
    cls = Base

class TestDerived1(BaseTest, unittest.TestCase):
    cls = Derived1

unittest.main()
于 2012-07-03T09:48:05.567 に答える
0

同じテスト階層を構築できます

class BaseTest()
    cls = None

    def setUp(self):
        self.instance = self.cls()

    def test_Method1(self) 
        ...

class TestParent(unittest.TestCase, BaseTest):
    cls = Base


class TestDerived1(unittest.TestCase, BaseTest):
    cls = Derived1

...
于 2012-07-03T09:02:14.617 に答える