1

単体テストを含む 2 つのファイルがあり、2 番目のファイルのテストは最初のファイルのテストの一部を拡張してオーバーライドします。

非常に単純化された例で説明します。ありますtests1.py

import unittest

class A(unittest.TestCase):
    def setUp(self):
        print "setup stuff A"

    def test_stuff(self):
        print "test stuff A"

if __name__ == "__main__":
    unittest.main()

そしてtests2.py

import unittest
from tests1 import A

class B(A):
    def setUp(self):
        print "setup stuff B"

    def test_stuff(self):
        print "test stuff B"

if __name__ == "__main__":
    unittest.main()

各ファイルを単独で実行したり、一連のファイル全体を 1 つのバッチで実行したりしたいと考えています。そして、実行するテストのセットを手動で指定する必要があるさまざまなスイートを手動で作成したくありません...

ただし...上記の例では、 を実行するpython tests2.pyと、 のテストtests1.pyも実行されます! そして、それらをすべてバッチで実行すると、2 回実行されます。Aからインポートしているため、これが発生することを理解していtests2.pyます。どうすればこれを回避できますか? 私が従うべきベストプラクティスはありますか?

私は実際に PyCharm からテストを実行していますが、コマンドラインからテストを実行して同じ問題を再現できるため、関連性がない可能性があると思います。

4

1 に答える 1

2

から継承しない別のクラスに共通コードを分割しますunittest.TestCase

class Parent(object):
    pass # common stuff goes here

class A(Parent, unittest.TestCase):
    pass # A stuff here

class B(Parent, unittest.TestCase):
    pass # B stuff here
于 2012-05-17T13:28:14.433 に答える