1

this questionthis oneを見てきましたが、私のユースケースで pyunit がどのように機能するかについてまだ興味があります。

複数の入力に対して同じメソッドをテストしたい。これを行うために、いくつかのテスト メソッドを持つクラスと、異なるsetUpメソッドを持つ 2 つのサブクラスを作成しました。

このようなもの:

class Test_Foo(unittest.TestCase):
    # abstract class, do not actually add this to the test suite!
    def test_01_preserves(self):
        """Foo preserves bazness correctly"""
        self.assertTrue(is_preserved(self.foo.baz))
        ....
    ...

class Test_Foo_simple(Test_Foo):
    """test Foo for some simple input"""
    def setUp(self):
        self.input = ""
        self.params = {}
        self.foo = Foo(self.input, self.params)

class Test_Foo_complex(Test_Foo):
    """test Foo for some complex input"""
    def setUp(self):
        self.input = "complicated stuff"
        self.params = {"bar" : 3}
        self.foo = Foo(self.input, self.params)

...

次に、2 番目の 2 つのクラスを a に追加し、それをTestSuiteで実行しTextTestRunnerます。

出力は次のようになります。

Foo preserves bazness correctly ... ok
...
Foo preserves bazness correctly ... ok
...

どのテストケースがどの時点で実行されているかを追跡する明確な方法はありません。

これを修正するにはどうすればよいですか?

私が現在行っているのは、__init__次のような各サブクラスにメソッドを追加することです。

super(Test_Foo_simple, self).__init__(self, *args, **kwds)
self._testMethodDoc = self._testMethodDoc + "(simple)"

これはひどいハックのようで、pyunit の将来のバージョンで動作する保証はありません。目的の docstring とサブクラスで別のローカル変数を定義してTextTestRunner、代わりにそれを使用することもできますが、それには独自の問題があります。これを回避するより良い方法はありますか?

4

0 に答える 0