0

こんにちは、Python の標準ユニットテスト ライブラリを自分のニーズに合わせて微調整しようとしています。これまでのところ、すべてが実験的であり、何か間違っているかどうかを知りたいので、ここに私のコードがあります:

class Should(object):
    def __init__(self, subject):
        self.subject = subject
        self.suite = unittest.TestSuite()

    def run(self):
        unittest.TextTestResult().run(self.suite)

    def contain(self, elem):
        subject = self.subject
        class Contain(unittest.TestCase):
            def test_contain(self):
                self.assertIn(elem, subject)
        self.suite.addTest(Contain('test_contain'))

should = Should([1, 2, 3])
should.contain(1)
should.run()

このコードを実行すると、次のエラーが発生します。

unittest.TextTestResult().run(self.suite)
TypeError: __init__() takes exactly 4 arguments (2 given)

unittest のドキュメントから読んだことによると、この行unittest.TextTestResult().run(self.suite)はスイートでテスト ケースを実行する必要があります。

私は何か間違ったことをしていますか、それともテストケースをラップする方法が実行可能ではないということです。

前もって感謝します。

4

2 に答える 2

2
class Should(object):
    def __init__(self, *subject):
        self.subject = subject
        self.suite = unittest.TestSuite()

    def run(self):
        unittest.TextTestResult().run(self.suite)

    def contain(self, elem):
        subject = self.subject
        class Contain(unittest.TestCase):
            def test_contain(self):
                self.assertIn(elem, subject)
        self.suite.addTest(Contain('test_contain'))

should = Should([1, 2, 3])
should.contain(1)
should.run()

*subjectを使用すると、エラーが発生しなくなります。

于 2013-10-15T11:03:53.187 に答える