0,1 на самом деле очень сложное значение для хранения двоичного файла. В базе 2 1/10 представляет собой бесконечно повторяющуюся дробь
0.0001100110011001100110011001100110011001100110011...
Как указывалось несколькими, сравнение должно проводиться с постоянной одинаковой точности.
FWIW, это то, что мы делаем. Так как я не знаю о ваших настройках Unit-Test и Regression-Test, вы должны решить сами, полезно ли это.
«Каждая отдельная часть нашего проекта имеет значимый тест»
«Часть» не определена. «Значимый» не определен. Это нормально, однако, так как дальше будет лучше.
«проверяет правильность каждого компонента в нашей системе»
«Компонент» не определен. Но корректность определена, и мы можем назначить компоненту ряд альтернатив. Вы упоминаете только Python, поэтому я предполагаю, что весь проект является чистым Python.
Проверяет правильность каждого модуля.
Проверяет правильность каждого класса каждого модуля.
Проверяет правильность каждого метода каждый класс каждого модуля.
Вы не спрашивали о покрытии строки кода или покрытии логического пути, что хорошо. В этом заключается безумие.
" Для каждое изменение кода необходимо создать unittest.TestCase для изменяемого класса.
Тестовый код следует тем же правилам, что и любой другой код. В конце дня все проверяется. Он должен работать - даже если не все тесты проходят.
Передайте сценарий тестирования менеджеру по продукту (не менеджеру по качеству, фактическому менеджеру по продукту, который отвечает за доставку продукта клиентам) и убедитесь, что они запускайте сценарий каждый день и выясняйте, почему он не запускается или почему тесты не работают.
Фактическое выполнение основного тестового сценария - это не задача контроля качества - это работа каждого. Каждый менеджер на каждом уровне организации должен участвовать в ежедневном выпуске сценария сборки. Вся их работа должна зависеть от «всех тестов, пройденных прошлой ночью». В противном случае,
Только для покрытия кода вы можете использовать покрытия.py .
Что касается покрытия.py vs figleaf :
figleaf отличается от золотого стандарта инструментов покрытия Python ('охват.py') несколькими способами. В первую очередь фиговый лист использует тот же критерий для "интересных" строк кода как функция sys.settrace, что устраняет некоторые сложности в покрытии .py (но не означает, что ваш счетчик "loc" идет вниз). Во-вторых, figleaf не записывает выполненный код в стандартной библиотеке Python, которая приводит к значительному ускорению. И в-третьих, формат, в котором формат покрытия сохраняется очень просто и легко работать.
Вы можете использовать фиговый лист, если вы записываете репортаж из несколько типов тестов и необходимость объединить освещение в интересные способы и / или контроль, когда покрытие записано. cover.py лучше выбор для выполнения из командной строки и его отчеты намного приятнее.
Я думаю, у обоих есть свои плюсы и минусы.
Первым шагом будет написание содержательных тестов. Если вы будете писать тесты только для достижения полного охвата, это приведет к обратным результатам; это, вероятно, будет означать, что вы сосредоточитесь на деталях реализации модуля, а не на его ожиданиях.
Кстати, я бы использовал нос в качестве среды unittest ( http://somethingaboutorange.com/mrl/projects/nose/0.11. 1 / ); его система плагинов очень хороша и оставляет вам вариант покрытия (--with-cover для покрытия Неда, --with-figleaf для Titus one; поддержка для покрытия3 должна появиться), и вы можете написать плагин для своей собственной системы сборки, тоже.
Предполагая, что у вас уже есть относительно полный набор тестов, есть инструменты для части Python. Часть C гораздо более проблематична, в зависимости от доступности инструментов.
Для кода C это сложно на многих платформах, потому что gprof, профилировщик кода Gnu не может обрабатывать код, созданный с помощью -fPIC . Таким образом, в этом случае вы должны построить каждое расширение статически, что не поддерживается многими расширениями (например, см. Мое сообщение в блоге для numpy ). В Windows могут быть лучшие инструменты покрытия кода для скомпилированного кода, но это может потребовать от вас перекомпиляции расширений с помощью компиляторов MS.
Что касается «правильного» покрытия кода, я думаю, что это хороший баланс, чтобы избежать написания сложной единицы тестов как можно больше.