Я пытаюсь использовать unittest для автоматизации тестового примера. Однако, когда тест проходит или выходит из строя, он записывает результат на консоль. Есть ли способ, которым я могу иметь unittest, вернуть код состояния результата теста? Это потому, что я хотел бы добавить еще одну функцию в свой тестовый скрипт, чтобы записать результат теста в нашу базу данных. Каков наилучший способ оценки теста, который прошел или не прошел программно?Может ли Python Unittest вернуть код результата одного теста?
ответ
Это зависит от того, сколько информации вам нужно о результатах теста. Если вы просто хотите знать, если тест пройден/не удалось с помощью unittest.main
:
«По умолчанию основной вызовы sys.exit() с кодом выхода указывает на успех или провал испытаний запустить»
Так что проверка возвращаемого значения (0 = пройдена, не-0 = сбой) вашего тестового скрипта достаточно, чтобы получить переданный/сбойный ответ.
Если вам нужна дополнительная информация об испытаниях, вы можете пропустить вызов unittest.main()
и вызвать метод TestRunner.run
, который возвращает объект TestResult
, описывающий результаты. Пример:
import unittest
from unittest import TextTestRunner
class TestExample(unittest.TestCase):
def test_pass(self):
self.assertEqual(1, 1, 'Expected 1 to equal 1')
def test_fail(self):
self.assertEqual(1, 2, 'uh-oh')
if __name__ == '__main__':
test_suite = unittest.TestLoader().loadTestsFromTestCase(TestExample)
test_result = TestRunner().run(test_suite)
... и теперь вы можете проверить переменную test_result
, чтобы получить более подробную информацию о тестовом прогоне:
>>> test_result.testsRun
2
>>> test_result.failures
[(<test_example.TestExample testMethod=test_fail>, 'Traceback (most recent call last):\n File "test_example.py", line 9, in test_fail\n self.assertEqual(1, 2, \'uh-oh\')\nAssertionError: uh-oh\n')]
>>> len(test_result.failures)
1
Свойство TestResult
документируется here и примеры & вариантов объясняется запуск тестового бегунка here.
- 1. Запуск одного теста в unittest python
- 2. Python unittest framework: описание теста
- 3. Вызов метода на основе результата после unittest в Python
- 4. Получение результата Django Unittest в представлении
- 5. Визуализация результата теста на код обработки изображения
- 6. Python unittest, пропустить тесты при использовании базового теста-класса
- 7. Ruby MiniTest UnitTest Stubbing Class метод только для одного теста
- 8. Запуск UnitTest со структурой каталогов типичного теста
- 9. Может кто-нибудь объяснить, запутанный код unittest?
- 10. Как указать конкретную настройку и отключение теста в python unittest
- 11. Может ли Unittest в Python запустить список из строк?
- 12. Python unittest высмеивает ключ API
- 13. Python UnitTest вопрос
- 14. Python UnitTest результаты файла
- 15. Python unittest setUp function
- 16. Вернуть результат теста ping в Python
- 17. Можно ли пропустить setUp() для конкретного теста в unittest для python?
- 18. Python Unittest shortDescription распечатка Нет
- 19. Имея проблему с unittest Python
- 20. QUnit не может распознать более одного теста
- 21. Может ли функция вернуть более одного значения в C?
- 22. Пропустить UnitTest теста без синтаксиса декоратора
- 23. Python unittest + PhantomJS
- 24. Python unittest: test a test
- 25. Как я могу определить, был ли запущен мой скрипт/код python с unittest python?
- 26. Как указать время проверки для python unittest?
- 27. Python UnitTest и открытие
- 28. unittest, запуск теста из другого файла
- 29. argparse сбой при вызове из UnitTest теста
- 30. Создать Iron Python UnitTest результаты
Да, все, что мне нужно, это код выхода, но как я могу проверить его, когда после вызова unittest.main(), который затем вызывает код выхода? – user2766739
'test_suite = unittest.TestLoader() loadTestsFromTestCase (пример) test_result = TextTestRunner() запустить (test_suite) печати.. 'Код возврата:', unittest.main.sys.exit() Ran 1 испытание в 0.008s FAILED (failures = 1) № прогона тестов: 1 Код выхода: ' – user2766739
Код выхода применяется только в том случае, если вы запускаете единичный тест с использованием 'unittest.main()' в функции _ _ _ _ _ _ _ _ _ _ _ в этом случае это значение возвращается ко всем вызванным вашим тестам (т.е. оболочке). Вы не должны называть 'sys.exit()' самостоятельно. Если вы хотите запустить тест с помощью тестового бегуна, просто проверьте, содержат ли test_results какие-либо ошибки. –