我正在使用Travis CI运行Ned Batchelder的coverage模块进行持续集成,但我想只运行集成测试并跳过功能测试,因为它们耗时太长而且覆盖率测量不会受到影响。
我为此创建了一个特殊配置,但是我想知道在Python脚本中是否存在另一种知道方法,即代码是否由coverage运行。
答案 0 :(得分:2)
nose绝对有助于它:
@attr("no-coverage")
装饰器标记测试,并使用-a '!no-coverage'
选项--exclude-dir
和--exclude-dir-file
选项希望有所帮助。
答案 1 :(得分:1)
根据您的问题的措辞,我假设您不限制您正在运行的测试覆盖范围,并希望功能测试注意到它们正在运行覆盖范围,并且什么都不做。一种hacky方式可能是在功能测试中查看sys.argv,如果检测到覆盖率使用情况,则会采用不同的方式。但我认为更好的方法是在单独的兄弟目录中进行功能测试和单元测试,并告诉coverage只运行单元测试目录中的测试。您也可以使用--omit选项来限制正在运行的测试。
答案 2 :(得分:1)
Travis CI提供了几个可用于此的environment variables;在我的情况下,任何一个将服务:
CI=true
TRAVIS=true
即使之前提供的两个答案都非常有用,我认为这个解决方案更容易实现我所需要的。