единичные тесты - PullRequest
       6

единичные тесты

3 голосов
/ 21 июля 2010

Если я пишу библиотеку на C, которая включает в себя интерфейс Python, можно ли просто писать модульные тесты для функций и т. Д. В интерфейсе Python?Предполагая, что интерфейс Python завершен, это должно означать, что код C работает.

В основном я ленив в том, что для юнит-теста Python требуется почти ноль усилий.

спасибо, -ник

Ответы [ 4 ]

5 голосов
/ 21 июля 2010

Тесты через интерфейс Python будут ценными приемочными тестами для вашей библиотеки.Однако они не будут модульными тестами.

Модульные тесты написаны написанными теми же кодерами на том же языке, на той же платформе, что и модуль, который они тестируют ,Они тоже должны быть написаны!

Вы правы, хотя модульное тестирование в Python намного проще, чем C ++ (или даже C, как вы и сказали!).

1 голос
/ 21 июля 2010

Если вам важно только, работает ли библиотека Python, проверьте это.Это даст вам существенное подтверждение того, что библиотека C является надежной, но принцип «если вы ее не тестировали, он не работает» по-прежнему в основном применяется, и я бы не стал экспортировать библиотеку без тестового набора.

Теоретически можно проверить, что микрокод процессора выполняет свою работу правильно, но обычно это не так.

0 голосов
/ 21 июля 2010

Я вижу два основных ограничения для модульного тестирования через интерфейс Python.Будет ли нормально тестировать с этими ограничениями или нет, зависит от того, что делает библиотека, как она реализована, и от выравнивания интерфейса Python по интерфейсу библиотеки C.

  • библиотекаможет быть реализовано только так, как это использует библиотека Python.Это не проблема, поскольку интерфейс Python является единственным клиентом библиотеки C.
  • модульные тесты Python не имеют доступа к внутренним компонентам библиотеки C, поскольку модульные тесты, написанные на C, будут иметь:доступно только то, что доступно через интерфейс Python.Поэтому
    • если проблема возникает после 10 вызовов интерфейса Python, потребуется 10 вызовов для его воспроизведения, в то время как модульный тест, написанный на C, может создать прибор непосредственно, без 10 вызовов.Это может замедлить выполнение тестов Python.
    • модульные тесты Python не могут быть такими же изолированными, как модульные тесты на C, поскольку они не могут сбросить внутренние компоненты библиотеки
0 голосов
/ 21 июля 2010

В идеале вы бы написали юнит-тесты для каждого.

Ваши вызовы библиотеки Python, вероятно (надеюсь?) Не имеют однозначного соответствия вызовам вашей библиотеки C, потому что это не будет очень Python-интерфейсом, поэтому, если вы только тестируете свой Python-интерфейс модулем, будут варианты и последовательности вызовов библиотеки C, которые не были протестированы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...