我有一个python脚本,它接受命令行参数,使用一些文件.我正在编写成功的测试,py.test将这个脚本放在其脚本中,并执行它subprocess.call.
现在我想分析代码覆盖率coverage.py.覆盖范围,通过使用时pytest-cov的插件(其中有子装卸内置),没有看到/覆盖我的剧本时,它从创建一个临时目录测试名为py.test的tmpdir夹具.Coverage 在其所在的目录中调用时会看到我的脚本(并且filename参数指向远程路径).
在这两种情况下,我的测试通过!覆盖范围3.6,pytest-2.3.5,pytest-cov 1.6,全部来自PyPi.
问题:即使在另一个目录中执行脚本,如何识别我的脚本?这是覆盖范围内的错误,还是一些无法做到的事情?如果后者毕竟tmpdir是py.test的股票机制,那会感到惊讶......
最小的例子:
我有一个脚本my_script.py,它只是回应arg_file.txt通过命令行参数提供的文件的内容.在两个不同的测试中,这一次在a中调用tmpdir,一次在脚本的位置调用.两个测试都通过了,但是在tmpdir测试中,我没有得到任何覆盖信息!
测试运行:
~/pytest_experiment$ py.test -s
=================================== test session starts ====================================
platform linux2 -- Python 2.7.4 -- pytest-2.3.5
plugins: cov
collected 2 items
tests/test_in_scriptdir.py
set_up: In directory /tmp/pytest-52/test_10
Running in directory /home/cbuchner/pytest_experiment
Command: ./my_script.py /tmp/pytest-52/test_10/arg_file.txt
--Contents of arg_file.txt--
.
tests/test_in_tmpdir.py
set_up: In directory /tmp/pytest-52/test_11
Running in directory /tmp/pytest-52/test_11 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用覆盖模块为django项目找到覆盖范围,但得到"Coverage.py警告:没有收集数据.(无数据收集)".我的项目文件夹有src和tests文件夹.
我跑的时候
覆盖运行-m pytest &&覆盖率报告
它生成一个100%覆盖率的报告,其中包含tests文件夹中的文件列表.而我跑的时候
覆盖运行--source = src -m pytest &&覆盖率报告
它说
Coverage.py警告:未收集任何数据.(无数据收集)
无数据报告.
当我尝试在.coveragerc中给出source = src或include = src时,也会发生相同的警告.上述所有案例均通过测试.
我想要src文件夹的覆盖范围.是因为我错过了一些路径设置吗?