Кодовая база для моего Python проекта содержит множество тестов. Эти тесты достаточно широки и емки, чтобы я назвал их «надежными». Я хотел бы точно знать, насколько они надежны, поэтому я настроил coverage.py
tool и codecov.io account .
Проект имеет два типа тестов:
- набор модульных тестов, которые были написаны с самого начала для запуска с
pytest
- т.е. не существует устаревших тестов на основе unittest
и pytest
приспособления и крючки в значительной степени используются. - наборы встроенных тестовых функций для каждого модуля, написанные с помощью простого выполненного на заказ тестового прогона . Все они выглядят примерно так:
# -*- coding: utf-8 -*-
import sys # …etc
# «module code»
def test():
from clu.testing.utils import inline
@inline.precheck
def show_some_initial_values():
""" Precheck function description """
# «pre-check code»
@inline
def test_one():
""" Test one’s description """
# «test code»
@inline
def test_two():
""" Test two’s description """
# «test code»
@inline.diagnostic
def show_some_final_values():
""" Diagnostic function description """
# «post-run diagnostic code»
return inline.test(100) # runs test functions 100 times;
# prechecks and diagnostics run once
if __name__ == '__main__':
sys.exit(test())
… и выводят отчеты примерно так:
… встроенные тесты можно запускать для каждого модуля, прямо из редактора. Все они также могут быть запущены массово через a nox
setup , которая собирает и запускает все модули, которые определяют встроенные тесты .
Так что теперь, относительно coverage.py
и codecov.io - было чрезвычайно легко интегрировать пакет pytest
с этими инструментами. Я сделал несколько изменений в готовом файле .coveragerc
, установил плагин pytest
codecov.io, и это было так - эти тесты сообщают о своем покрытии codecov.io просто отлично.
У меня вопрос: как мне интегрировать отчеты о покрытии для встроенных тестов?
- Есть ли простой способ настроить
coverage.py
, чтобы «понять» эти функции тестирования, или встроенные тесты должны сообщать их результаты для инструмента (ов) покрытия? - Можно ли настроить что-то подобное в файле
.coveragerc
, или это более сложно? - И есть ли другие инструменты, которые Я должен рассмотреть, либо дополнительно, либо вместо того, что я сейчас использую?