所以我一直在努力开始使用代码覆盖率进行测试,为此我使用了 coverage api。在 docker 之外运行它时一切都很好,但是当使用 docker 运行它时它停止得太早以保存 .coverage 文件。
这是我的退出处理程序:
import logging
import signal
import config
logger = logging.getLogger(__name__)
class Exit:
def __init__(self, cov):
self.cov = cov
signal.signal(signal.SIGTERM, self.exit_cleanly)
signal.signal(signal.SIGINT, self.exit_cleanly)
signal.signal(signal.SIGABRT, self.exit_cleanly)
def exit_cleanly(self, signal_number, stackframe):
logger.info("Received exit signal. Exiting...")
if config.coverage:
self.cov.save()
quit(0)
这是我的覆盖处理程序:
from coverage import Coverage
import config
import logging
from time import time
logger = logging.getLogger(__name__)
class CoverageHandler:
def __init__(self):
if config.coverage:
coveragedatafile = ".coverage-" + str(int(time()))
self.cov = Coverage(data_file=f"{config.datadir_server}/coverage/{coveragedatafile}")
def start(self):
if config.coverage:
logger.info("Started coverage engine")
self.cov.start()
def save(self):
if config.coverage:
logger.info("Saving coverage files")
try:
self.cov.stop()
self.cov.save()
logger.info("Successfully saved coverage")
except Exception as e:
logger.critical("Exception occurred while saving coverage:")
logger.critical(e)
finally:
quit(0)
根据日志,它似乎在说它将保存覆盖文件后停止了
matrix-notifier-tester exited with code 137
matrix-notifier-bot | 03-09 17:35 Received exit signal. Exiting...
matrix-notifier-bot | 03-09 17:35 Saving coverage files
matrix-notifier-bot exited with code 0
matrix-notifier-server exited with code 0
起初我认为这与我使用
--abort-on-container-exit
的事实有关,但我尝试在没有它的情况下运行它并且它似乎没有改变任何东西
我花了很多时间寻找有类似问题的人,但找不到。