测量 Jupyter 内核中的执行覆盖率

问题描述

我尝试使用以下内核规范测量覆盖率,但没有写入任何结果。我想知道为什么会这样。并行标志也不创建任何覆盖结果文件。

请注意,python 的路径实际上是一个绝对路径,我已将其缩短仅用于演示目的。 ~/.local/share/jupyter/kernels/py3_cov/coverage_kernel.json的内容

{
 "argv": [
  "python","-m","coverage","run","--concurrency=thread","-p","ipykernel_launcher","-f","{connection_file}"
 ],"display_name": "py3_cov","language": "python"
}

预计在内核中运行的每个代码都会写入覆盖结果文件。如果这个想法是错误的,或者我只是做错了什么,请给我建议。

我知道已经有几个工具可以围绕笔记本执行和覆盖范围(如 nbval、pytest-notebook 等)。我明确提出这个问题,因为我不想为了这个(简单?!)目的而坚持使用另一个工具链。

解决方法

使用 --concurrency=multiprocessing 可以解决问题。但是您需要传递一个 rcfile 来设置子进程的选项。

{
 "argv": [
  "python","-m","coverage","run","--concurrency=multiprocessing","--rcfile=../setup.cfg"
  "-p","ipykernel_launcher","-f","{connection_file}"
 ],"display_name": "py3_cov","language": "python"
}

现在,当通过 jupyter nbconvert --execute 执行笔记本时,我在输入笔记本文件旁边得到一个覆盖文件:)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...