Python unittest - вызвать unittest.main () с пользовательским TestSuite

Я делаю юнит-тесты с питоном. Я не использую автоматическое тестовое обнаружение. Я собираюTestCases вTestSuite вручную.

Я могу запустить эти тесты сunittest.TextTestRunner().run(suite)Я хотел бы запустить их сunittest.main() так что я могу использовать параметры командной строки (например,-v/--failfast). В документации сказано, чтоunittest.main() может взять опцию TestRunner.

Как конвертировать мойTestSuite вTestRunner?

 S.Lott22 сент. 2010 г., 21:17
Вы просто пытаетесь пройтиfailfast к вашему TestRunner? Если вы читаете источник, недокументированная особенность testrunner заключается в том, что он принимаетfailfast параметр.
 Rory22 сент. 2010 г., 21:10
Как мне предоставить набор тестов для unittest.main ()? Или как мне сделать TestRunner, который будет запускать данный TestSuite (который я могу передать unittest.main ())
 S.Lott22 сент. 2010 г., 21:04
TestSuite и TestRunner имеютничего такого делать друг с другом. Набор представляет собой набор тестов. Бегун выполняет набор тестов. Вы не превращаете одно в другое. Вы предоставляете набор для бегуна (черезunittest.main(), обычно.)

Ответы на вопрос(2)

только убедитесь, что у вас есть это в модуле модульного тестирования

if __name__ == '__main__':
    unittest.main(failfast=True)

http://docs.python.org/library/unittest.html#unittest.main

Из документации ...

unittest.main( failfast=True, testRunner=unittest.TextTestRunner )
 Rory22 сент. 2010 г., 20:49
Я не использую тестовое автообнаружение unittest.main (), я вручную создаю TestSuite. Если я использую unittest.main, как вы предлагаете, он не будет запускать мои тесты. Я пробовал.
 S.Lott22 сент. 2010 г., 21:00
Почему ручная работа? Почему основной автообнаружение не выполняет ваши тесты? Каковы ваши тестовые суперклассы? Каковы ваши тестовые имена? Это прекрасно работает для меня. Что ты делаешь не так?
 Rory22 сент. 2010 г., 21:38
@ С.Лотт видит преимущества, которые я перечислил в этом ответе.
 S.Lott23 сент. 2010 г., 02:51
@Rory: я видел эти "преимущества". Я не согласен с ними. Они не «полезны». Этот вопрос - действительно - свидетельствует о том, что он на самом деле вреден, а не полезен.
 S.Lott22 сент. 2010 г., 21:22
@Rory: такой подход кажется глупым. Почему бы не поставить петлю вrunTest где это должно быть? Зачем создавать сложный набор, если вы можете переместить сложность в один контрольный пример, который просто перебирает значения?
 Rory22 сент. 2010 г., 21:11
Я не использую автообнаружение, потому что я делаю TestCases на основе известных допустимых входных данных для функции. Я использую этот подходstackoverflow.com/questions/2798956/...

Как запустить тестовый пакет с unittest.main (ответ скопирован и вставлен):

Вы не можете передатьTestSuite на главную, проверьте конструкторunittest.main.TestProgram (который былunittest.main на самом деле) и как этот класс работает. Первым аргументом является имя модуля, а не набор тестов.

main() на самом деле берет свои аргументы отsys.argv, поскольку он на самом деле предназначен для использования из командной строки, а не из программы. Это просто для удобства.

Ваш ответ на вопрос