覆盖范围在Travis上失败但在本地机器上失败 - 错误取决于标志的顺序

时间:2016-08-08 18:30:24

标签: python travis-ci pytest coverage.py

我的.travis.yml文件中有以下script部分:

script:
  # run all tests in mymodule/tests and check coverage of the mymodule dir
  # don't report on coverage of files in the mymodule/tests dir itself
  - coverage run -m --source mymodule --omit mymodule/tests/* py.test mymodule/tests -v

这在我自己的(Windows)计算机上工作正常,但在Travis构建上的Linux和OSX上都会抛出错误。错误是:

  

不支持按文件名导入。

如果标志的顺序不同,我会看到一个不同的错误(仅在Linux版本上 - OSX测试通过了这个标志的顺序):

-coverage run --source eppy --omit eppy/tests/* -m py.test eppy/tests -v
  

无法找到&_ 39; __ main __'模块in mymodule / tests / geometry_tests'

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

通过将coverage直接更改为使用pytest-cov来解决。

script:
  # run all tests in mymodule/tests and check coverage of the mymodule dir
  - py.test -v --cov-config .coveragerc --cov=mymodule mymodule/tests

.coveragerc文件:

# .coveragerc to control coverage.py
[run]
# don't report on coverage of files in the tests dir itself
omit = 
  mymodule/tests/*

我不知道为什么这种方法适用于以前的方法,但这至少解决了这个问题。