如何解决测量 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 执行笔记本时,我在输入笔记本文件旁边得到一个覆盖文件:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。