Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python覆盖子进程覆盖率。进程启动()错误_Python_Subprocess_Coverage.py - Fatal编程技术网

Python覆盖子进程覆盖率。进程启动()错误

Python覆盖子进程覆盖率。进程启动()错误,python,subprocess,coverage.py,Python,Subprocess,Coverage.py,Python版本3.7.5,涵盖范围5.0.3 为了学习如何测量子流程的覆盖率,我创建了一个由3个文件组成的小项目 main.py: import subprocess import coverage coverage.process_startup() subprocess.run(['python', 'subprocess_script.py']) 子流程_script.py: print('123') .保险人C: [run] branch = True data_file = co

Python版本3.7.5,涵盖范围5.0.3

为了学习如何测量子流程的覆盖率,我创建了一个由3个文件组成的小项目

main.py:

import subprocess
import coverage
coverage.process_startup()
subprocess.run(['python', 'subprocess_script.py'])
子流程_script.py:

print('123')
.保险人C:

[run]
branch = True
data_file = coverage-data-new
source = .
环境变量“COVERAGE\u PROCESS\u START”链接到此项目中的.coveragerc

执行
coverage run main.py
后,我得到以下错误:

C:\Users\Kirill.Brusinets\PycharmProjects\test_subprocess_coverage>coverage run main.py
123
self._collectors:
  <Collector at 0x2f75f48: CTracer>
           _run_module_as_main : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py:193
                     _run_code : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py:85
                      <module> : C:\Users\Kirill.Brusinets\AppData\Local\Programs\Python\Python37\Scripts\coverage.exe\__main__.py:9
                          main : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py:828
                  command_line : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py:555
                        do_run : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py:700
                         start : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\control.py:518
               _init_for_start : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\control.py:449
                      __init__ : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\collector.py:111
  <Collector at 0x2fede08: CTracer>
           _run_module_as_main : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py:193
                     _run_code : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py:85
                      <module> : C:\Users\Kirill.Brusinets\AppData\Local\Programs\Python\Python37\Scripts\coverage.exe\__main__.py:9
                          main : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py:828
                  command_line : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py:555
                        do_run : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py:703
                           run : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\execfile.py:247
                      <module> : main.py:3
               process_startup : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\control.py:1094
                         start : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\control.py:518
               _init_for_start : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\control.py:449
                      __init__ : c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\collector.py:111
Traceback (most recent call last):
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\Kirill.Brusinets\AppData\Local\Programs\Python\Python37\Scripts\coverage.exe\__main__.py", line 9, in <module>
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py", line 828, in main
    status = CoverageScript().command_line(argv)
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py", line 555, in command_line
    return self.do_run(options, args)
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\cmdline.py", line 708, in do_run
    self.coverage.stop()
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\control.py", line 542, in stop
    self._collector.stop()
  File "c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\site-packages\coverage\collector.py", line 333, in stop
    "Expected current collector to be %r, but it's %r" % (self, self._collectors[-1])
AssertionError: Expected current collector to be <Collector at 0x2f75f48: CTracer>, but it's <Collector at 0x2fede08: CTracer>
C:\Users\Kirill.Brusinets\PycharmProjects\test\u subprocess\u coverage>coverage run main.py
123
自行收集:
_以\u main:c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py:193运行\u模块
_运行代码:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\runpy.py:85
:C:\Users\Kirill.Brusinets\AppData\Local\Programs\Python\37\Scripts\coverage.exe\\uuuuuuuu main\uuuuuu.py:9
main:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\cmdline.py:828
命令行:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\cmdline.py:555
是否运行:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\cmdline.py:700
开始:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\control.py:518
_init\u for\u start:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\control.py:449
__初始化:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\collector.py:111
_以\u main:c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py:193运行\u模块
_运行代码:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\runpy.py:85
:C:\Users\Kirill.Brusinets\AppData\Local\Programs\Python\37\Scripts\coverage.exe\\uuuuuuuu main\uuuuuu.py:9
main:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\cmdline.py:828
命令行:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\cmdline.py:555
是否运行:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\cmdline.py:703
运行:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\execfile.py:247
:main.py:3
进程\u启动:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\control.py:1094
开始:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\control.py:518
_init\u for\u start:c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\control.py:449
__初始化:c:\users\kirill.brusinets\appdata\local\programs\python\37\lib\site packages\coverage\collector.py:111
回溯(最近一次呼叫最后一次):
文件“c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py”,第193行,位于主运行模块中
“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
文件“c:\users\kirill.brusinets\appdata\local\programs\python\python37\lib\runpy.py”,第85行,在运行代码中
exec(代码、运行\全局)
文件“C:\Users\Kirill.Brusinets\AppData\Local\Programs\Python37\Scripts\coverage.exe\\uuuuuuu main\uuuuuu.py”,第9行,在
文件“c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site-packages\coverage\cmdline.py”,第828行,主目录
状态=CoverageScript()。命令行(argv)
命令行中的文件“c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\cmdline.py”第555行
返回self.do_run(选项、参数)
文件“c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\cmdline.py”,第708行,在do\u run中
self.coverage.stop()
文件“c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\control.py”,第542行,在stop中
self.\u收集器.停止()
文件“c:\users\kirill.brusinets\appdata\local\programs\python37\lib\site packages\coverage\collector.py”,第333行,在stop中
“预期集电器为%r,但为%r”%(自,自。\集电器[-1])
AssertionError:预期电流收集器是,但它是
如果我将coverage.process\u startup()放入subprocess\u script.py,我不会得到任何错误,但覆盖率仅在main.py上测量。如何使其工作?

子进程。运行(['python','subprocess_script.py'])
启动一个新的子进程。这与你的魅力没有关系。当您开始覆盖时,覆盖将侦听同一个解释器。子流程在当前执行环境之外创建一个新的解释器。所以你的报道永远听不到另一个翻译

为什么要将其作为子进程运行?另一种解决方案是将
子流程脚本导入主脚本并调用可执行函数。

子流程。运行(['python','subprocess\u script.py'])
启动一个新的子流程。这与你的魅力没有关系。当您开始覆盖时,覆盖将侦听同一个解释器。子流程在当前执行环境之外创建一个新的解释器。所以你的报道永远听不到另一个翻译

为什么要将其作为子进程运行?另一种解决方案是将
子流程脚本导入主脚本并调用可执行函数