У модульного тестирования и функционального тестирования два разных результата.
Модульное тестирование подтверждает, что небольшой фрагмент кода работает, как и ожидалось. Обычно это делается разработчиком для обеспечения правильной работы кода. Как правило, они также автоматизируются с помощью тестовой среды.
Функциональное тестирование проверяет, что функция работает, как и ожидалось, пройдя определенный путь через программу. Они обычно выполняются человеком в программном обеспечении, гарантирующем, что программа будет работать так, как это предполагается для пользователя. Это, как таковой, более высокий уровень, и, следовательно, тестирование нескольких единиц одновременно.
Я думаю, что оба важны. Если у вас ограниченные ресурсы, и вам нужно выбирать методики, и я думаю, что это зависит от продуктов, которые вы создаете, но для того, что я делаю (продукты для управления автомобилем, используемые людьми с помощью некоторых кнопок), функциональные тесты наиболее важны. Он проверяет и гарантирует, что когда пользователь получает продукт, он делает то, что должен. Это не означает, что мы должны отказаться от модульного тестирования, но если функция «нажми и принеси», функциональность является наиболее важной, чтобы обеспечить удобство работы пользователя и вывести продукт на улицу.
Если вы производите, скажем, ядро базы данных (или какой-либо другой продукт, который не обязательно ориентирован на пользователя), вам может потребоваться модульное тестирование.
Попробуйте
f = opener.open(req)
simplejson.load(f)
без предварительного запуска f.read (). Когда вы запускаете f.read (), содержимое дескриптора файла становится невнятным, поэтому при вашем вызове simplejson.load (f)
Первая строка читает весь файл. Вторая строка затем пытается прочитать больше из файла, но ничего не остается:
>>> f.read() # this works
blah blah blah
>>> simplejson.load(f)
Либо просто опустите строку f.read (), либо сохраните значение из прочитанного и используйте его при загрузках:
json = f.read()
simplejson.loads(json)