Некоторая часть кода работает в Windows, а часть работает на других платформах. Я хочу увеличить охват кода, соответствующим образом разместив #pragma: no cover
. Поэтому, когда программа работает на платформе Windows, код, относящийся к другим платформам, следует игнорировать и наоборот. Как я могу это достичь?Улучшение покрытия для кода python, зависящего от платформы
ответ
Создать .coveragerc
и определить правила для пропуска линий при генерации отчетов:
[report]
exclude_lines =
pragma: no cover
Но как указать, чтобы игнорировать определенную строку, если платформа - это окна, в противном случае игнорирует другую строку? –
Вы можете создавать отдельные файлы конфигурации для разных платформ. Например.; 'pragma: no cover linux' и' pragma: no cover win32' и т. д. Затем передайте эти конфигурации в зону покрытия вручную или выберите их автоматически в зависимости от целевой платформы, например. внутри 'setup.py' или внутри вашего тестировщика (который вам, возможно, придется создавать). – oblalex
Лучшее решение не игнорировать линии на всех, и вместо того, чтобы измерить охват на всех платформах, а затем объединить их вместе.
Вы можете запускать покрытие в «параллельном режиме», чтобы каждый файл данных получал четкое имя, а parallel = true. Затем скопируйте все файлы данных в одно место, запустите «комбинирование покрытия», а затем «отчет о покрытии».
Это чистая и аккуратная, +1 – oblalex
Возможный дубликат [Может ли модуль покрытия python условно игнорировать строки в единичном тесте?] (Http://stackoverflow.com/questions/35513257/can-python-coverage-module-condition-ignore-lines-in-a -unit-test) – oblalex