Я новичок в Github. Я новичок в написании блок-тестов. Я внес свой вклад в проект, но владелец попросил меня предоставить тестовые модули, которые не работают до исправления и работают после исправления. Как я могу это сделать? Должен ли я написать их все вместе? Как только у меня будет одна копия кода (т. Е. С исправлением или без исправления). Я использую Python и импортирую unittest. Я запутался. Перед исправлением я получаю исключение, поэтому я должен использовать assertRaises() для этого. Я много читал, но не смог начать.unit testing python как tos
ответ
Предположим, у вас есть исправление для следующих сломанный delta
функции:
неработающей версия:
def delta(a, b):
return a - b
Fixed версия:
def delta(a, b):
return abs(a - b)
Затем предоставить следующие TestCase. Он сломается с неисправной версией и будет работать с фиксированной версией.
import unittest
from module_you_fixed import delta
class TestDelta(unittest.TestCase):
def test_delta(self):
self.assertEqual(delta(9, 7), 2)
self.assertEqual(delta(2, 5), 3)
if __name__ == '__main__':
unittest.main()
Я предположил, что проект использует стандартную библиотеку unittest module. Вы должны использовать структуру, которую использует проект.
Абсолютно отличный пример. Три приветствия. Только одно: я думал написать два таких файла, один с assertsequal() для фиксированного и один с assertRaises() для исключения (сломанный). Но я думаю, что, увидев ваш ответ, я могу просто пойти с одним файлом и просто получить assertsEqual. Теперь сломанный провалится, а затем зафиксирует, что один пройдет. Допустимо ли это, или мне нужно написать 2 файла и передать оба теста в фиксированном (с assertsEqual), а также передать сломанный (используя assertRaises)? Anyways +1 для вашего ответа. – Dominix
@ Dominix, просто assertEqual один. – falsetru
Когда я использую assertEqual(), и первый тест терпит неудачу, я имею в виду вызов self.assertEqual (delta (9, 7), 2), которому не удалось выполнить следующую строку. Как я могу выполнить его для каждого тестового примера и распечатать FAIL для всех, а не просто сбой для одного и выйти – Dominix
- 1. Python Regexs Unit Testing
- 2. Python unit testing без django
- 3. Python Unit testing backup statics
- 4. Unit-testing boost :: python library in python
- 5. Python, unit-testing и mocking import
- 6. unit testing with doctest in python 2.7
- 7. Python Unit Testing and when to Mock
- 8. Python Unit-Testing All Test Cases
- 9. Python Unit Testing тестирует насмешливый ввод
- 10. Unit Testing for GUI
- 11. Qt Unit Testing
- 12. Unit Testing EJB
- 13. Unit Testing - Как это сделать?
- 14. AndroidAnnotations и Unit Testing
- 15. Rihno-mocks Unit Testing
- 16. unit testing angularjs директива
- 17. PHP Unit testing
- 18. Jasmine unit testing window.onbeforeunload
- 19. unit testing system.timers.timer
- 20. Unit-testing iPhone rotation
- 21. Silverlight 4 Unit Testing
- 22. Node.js - Unit Testing Middleware
- 23. Unit Testing WinForms
- 24. C++ Unit Testing Libraries
- 25. Unit Testing Swagger Output
- 26. Unit Testing Json Результат
- 27. Swift Unit Testing IBAction
- 28. MVC Unit Testing LocomotiveJS
- 29. Unit Testing IUnityContainer.Resolve
- 30. Android gps unit testing
Нет необходимости использовать 'assertRaises': тест * должен быть неудачным * для старого кода, поэтому простой' assertEqual' (или одна из других проверок) - это правильный путь. Вам нужно только использовать 'assertRaises', если вы хотите проверить, имеет ли функция правильную обработку ошибок (например, генерирует ли она правильное исключение, если указан недопустимый ввод). В общем, вы всегда утверждаете правильное поведение *. –
Спасибо Флориан за то, что я понял правильное использование assertRaises() – Dominix