所以我尝试使用coverage.py工具来测量我的Django应用程序的代码覆盖率,但是,我今天取得了成功。基本上,我的计划是在运行docker容器之后让流程管理器执行.sh
文件,其中包含以下两行:coverage run /path/to/manage.py test nameofapp
和coverage html -d coverage_html"
。问题是没有创建html文件,我基本上得到关于覆盖范围的0信息。使用docker exec -it nameofcontainer bash
进入docker容器并读取日志后,我发现了以下错误:
----------------------------------------------------------------------
Ran 12 tests in 0.081s
OK
>>> Creating test database for alias 'default'...
Destroying test database for alias 'default'...
Traceback (most recent call last):
File "/usr/bin/coverage", line 9, in <module> load_entry_point('coverage==4.3.4', 'console_scripts', 'coverage')()
File "/usr/lib/python3.4/site-packages/coverage/cmdline.py", line 756, in main status = CoverageScript().command_line(argv)
File "/usr/lib/python3.4/site-packages/coverage/cmdline.py", line 483, in command_line return self.do_run(options, args)
File "/usr/lib/python3.4/site-packages/coverage/cmdline.py", line 641, in do_run self.coverage.save()
File "/usr/lib/python3.4/site-packages/coverage/control.py", line 742, in save self.data_files.write(self.data, suffix=self.data_suffix)
File "/usr/lib/python3.4/site-packages/coverage/data.py", line 673, in write data.write_file(filename)
File "/usr/lib/python3.4/site-packages/coverage/data.py", line 460, in write_file with open(filename, 'w') as fdata:
PermissionError: [Errno 13] Permission denied: '/.coverage'
因此,在看到/.coverage缺少权限后,我只是添加了chmod +x /path/to/.coverage
,但是,这会产生0差异,但我收到了完全相同的错误。我决定再次进入容器并自己执行脚本,令我惊讶的是,它完美无缺。那么为什么我无法使用流程管理器执行.sh
文件?是因为我运行第一个coverage命令时创建了/.coverage
文件,甚至我添加了chmod
命令我还没有真正更改文件的权限,因为它仍然不存在?