2017-01-21 6 views
0

Некоторая часть кода работает в Windows, а часть работает на других платформах. Я хочу увеличить охват кода, соответствующим образом разместив #pragma: no cover. Поэтому, когда программа работает на платформе Windows, код, относящийся к другим платформам, следует игнорировать и наоборот. Как я могу это достичь?Улучшение покрытия для кода python, зависящего от платформы

+0

Возможный дубликат [Может ли модуль покрытия python условно игнорировать строки в единичном тесте?] (Http://stackoverflow.com/questions/35513257/can-python-coverage-module-condition-ignore-lines-in-a -unit-test) – oblalex

ответ

0

Создать .coveragerc и определить правила для пропуска линий при генерации отчетов:

[report] 
exclude_lines = 
    pragma: no cover 
+0

Но как указать, чтобы игнорировать определенную строку, если платформа - это окна, в противном случае игнорирует другую строку? –

+0

Вы можете создавать отдельные файлы конфигурации для разных платформ. Например.; 'pragma: no cover linux' и' pragma: no cover win32' и т. д. Затем передайте эти конфигурации в зону покрытия вручную или выберите их автоматически в зависимости от целевой платформы, например. внутри 'setup.py' или внутри вашего тестировщика (который вам, возможно, придется создавать). – oblalex

1

Лучшее решение не игнорировать линии на всех, и вместо того, чтобы измерить охват на всех платформах, а затем объединить их вместе.

Вы можете запускать покрытие в «параллельном режиме», чтобы каждый файл данных получал четкое имя, а parallel = true. Затем скопируйте все файлы данных в одно место, запустите «комбинирование покрытия», а затем «отчет о покрытии».

+0

Это чистая и аккуратная, +1 – oblalex