Тестовый люкс устарел в Pyunit?
-
30-09-2019 - |
Вопрос
Следуя примерному примеру в Pyunit, я придумал следующий нерешенный код, который работает нормально.
import unittest
class Board:
def __init__(self, x, y):
self.x = x; self.y = y;
def __eq__(self, other):
return self.x == other.x and self.y == other.y
class BoardTest(unittest.TestCase):
def setUp(self):
self.b10_10 = Board(10,10)
self.b10_10p = Board(10,10)
self.b10_20 = Board(10,20)
def tearDown(self):
pass
def test1(self):
self.assert_(self.b10_10 == self.b10_10p)
def test2(self):
self.assert_(not (self.b10_10 == self.b10_20))
class BoardTest2(unittest.TestCase):
def setUp(self):
self.b10_10 = Board(10,10)
self.b10_10p = Board(10,10)
self.b10_20 = Board(10,20)
def tearDown(self):
pass
def test1(self):
self.assert_(self.b10_10 == self.b10_10p)
def test2(self):
self.assert_(not (self.b10_10 == self.b10_20))
def suite():
suite1 = unittest.makeSuite(BoardTest)
suite2 = unittest.makeSuite(BoardTest2)
return unittest.TestSuite((suite1, suite2))
if __name__ == "__main__":
unittest.main()
Но дело в том, что даже если я удалю
def suite ():, результат такой же. Другими словами, похоже, что приспособление / пайи не бесполезны с Pyunit.
Это правильно?
Решение
Unittest.testsuite не нужен, если вы хотите запустить все тесты в одном модуле, так как Unittest.main () будет динамически изучить модуль, который называется и находит все классы, которые получают из Unittest.
Однако класс Testsuite все еще удобно в ряде сценариев:
- Вы хотите создать набор логических групп тестов. Например, набор узловных испытаний, тесты интеграции, тесты для определенной подсистемы и т. Д.
- Вы тестируете проверенные модули / пакеты. В этом сценарии полезно иметь один скрипт, который вы можете запустить выполнить все ваши тесты. Это может быть достигнуто путем создания набора всех ваших испытаний. Обратите внимание, что это становится неактуальным с библиотеками, такими как открытие.
Другие советы
В дополнение к ответу Марка, еще одна причина для создания собственного набора () - это если вы динамически строят тесты.
Кроме того, мне потребовалось некоторое время, чтобы выяснить, как заставить Pydev поднять набор и запустить его в графическом тестовом бегуне. Хитрость заключается в том, чтобы положить в метод, как так:
def load_tests(loader, tests, pattern):
return suite()
Такой метод получает поднятую графической тестовой бегун.