ソートアルゴリズムの共通テストでは、基本クラス(を継承します。からobject
)を継承しています。ここで、特定のアルゴリズムごとに、unittest.TestCase
とこのクラスを継承するテストクラスを作成し、すべてのソートアルゴリズムの共通テストを行いたいと思います。unittest.TestCaseと他のクラスを継承しようとしています
たとえば、バブルソートなどをテストするクラスを作成したいとします。現在、私がやっている:
import unittest
from ands.algorithms.sorting import bubble_sort
from tests.algorithms.sorting.base_tests import *
class TestBubbleSort(unittest.TestCase, SortingAlgoTests):
def __init__(self):
unittest.TestCase.__init__(self)
SortingAlgoTests.__init__(self, bubble_sort, True)
if __name__ == "__main__":
unittest.main(verbosity=2)
を今、私はコマンドを使用してTestBubbleSort
を実行すると:私はので
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/__main__.py", line 18, in <module>
main(module=None)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/main.py", line 93, in __init__
self.parseArgs(argv)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/main.py", line 117, in parseArgs
self._do_discovery(argv[2:])
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/main.py", line 228, in _do_discovery
self.test = loader.discover(self.start, self.pattern, self.top)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/loader.py", line 341, in discover
tests = list(self._find_tests(start_dir, pattern))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/loader.py", line 398, in _find_tests
full_path, pattern, namespace)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/loader.py", line 452, in _find_test_path
return self.loadTestsFromModule(module, pattern=pattern), False
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/loader.py", line 123, in loadTestsFromModule
tests.append(self.loadTestsFromTestCase(obj))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/loader.py", line 92, in loadTestsFromTestCase
loaded_suite = self.suiteClass(map(testCaseClass, testCaseNames))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/suite.py", line 24, in __init__
self.addTests(tests)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/unittest/suite.py", line 57, in addTests
for test in tests:
TypeError: __init__() takes 1 positional argument but 2 were given
:私のようなエラーの束を取得
coverage run -m unittest discover . -v
をこのモジュールunittest
で非常に新しいですが、私はすでにJavaプロジェクトの単体テストを作成していましたが、何が問題なのかよくわかりません。
import unittest
from ands.algorithms.sorting import bubble_sort
from tests.algorithms.sorting.base_tests import *
class TestBubbleSort(unittest.TestCase, SortingAlgoTests):
pass
if __name__ == "__main__":
unittest.main(verbosity=2)
は、私はもう上のエラーを持っていない:
は私が__init__
メソッドを持っていない場合、すなわち、
TestBubbleSort
はこのように見えることに気づきました。問題はソートアルゴリズムを
SortingAlgoTests
基底クラスに渡す必要があるため、そのコンストラクタを呼び出す必要があります。通常は
__init__
メソッドで行います。
どうすればこの問題を解決できますか?