покрытие Python на бесконечный процесс
У меня есть многопроцессорный веб-сервер с процессами, которые никогда не заканчиваются, я хотел бы проверить покрытие кода для всего проекта в реальной среде (не только в тестах).
Проблема в том, что, поскольку процессы никогда не заканчиваются, у меня нет подходящего места для установкиcov.start() cov.stop() cov.save()
крючки.
Поэтому я подумал о создании потока, который в бесконечном цикле будет сохранять и объединять данные покрытия, а затем некоторое время спать, однако этот подход не работает, отчет о покрытии кажется пустым, за исключением строки ожидания.
Я был бы рад получить любые идеи о том, как получить покрытие моего кода, или любой совет о том, почему моя идея не работает. Вот фрагмент моего кода:
import coverage
cov = coverage.Coverage()
import time
import threading
import os
class CoverageThread(threading.Thread):
_kill_now = False
_sleep_time = 2
@classmethod
def exit_gracefully(cls):
cls._kill_now = True
def sleep_some_time(self):
time.sleep(CoverageThread._sleep_time)
def run(self):
while True:
cov.start()
self.sleep_some_time()
cov.stop()
if os.path.exists('.coverage'):
cov.combine()
cov.save()
if self._kill_now:
break
cov.stop()
if os.path.exists('.coverage'):
cov.combine()
cov.save()
cov.html_report(directory="coverage_report_data.html")
print "End of the program. I was killed gracefully :)"