是否可以为单个存储库获取单独的前端和后端测试报告?
似乎有一种可能的方法是将lcov
报告连接成一个然后运送到工作服,如本问题所述.
但是,我想知道是否有办法查看前端和后端的单独代码覆盖率报告,或者为lcov
工作服提供两个文件.如果是这样,怎么样?
TL;博士:
我正在为我的一个项目设置CI,在github上托管,使用tox
和travis-ci
.在构建结束时,我converalls
会将覆盖率报告推送到coveralls.io
.我想让这个命令'有条件' - 只有当测试在travis上运行时才能执行; 不是当他们在我的本地机器上运行时.有没有办法让这种情况发生?
细节:
我正在尝试测试的包是一个python包.我正在使用/计划使用以下"基础架构"来设置测试:
py.test
多种多样的.tox
.这让我可以在本地运行测试,这对我来说非常重要.我不想每次需要测试运行时都要推送到github.我也用numpy
,并matplotlib
在我的包,因此在运行测试周期的空洞的数量上travis-ci
似乎过于浪费在我身上.因此,放弃tox
和.travis.yml
单独使用不是一种选择.travis-ci
相关的测试脚本如下所示:
.travis.yml
language: python
python: 2.7
env:
- TOX_ENV=py27
install:
- pip install tox
script:
- tox -e $TOX_ENV
Run Code Online (Sandbox Code Playgroud)
tox.ini
[tox]
envlist = py27
[testenv]
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
deps =
pytest
coverage
pytest-cov
coveralls
commands =
py.test --cov={envsitepackagesdir}/mypackage --cov-report=term --basetemp={envtmpdir}
coveralls
Run Code Online (Sandbox Code Playgroud)
这个文件让我在本地运行测试.但是,由于最后的coveralls
呼叫,测试原则上失败了:
py27 …
Run Code Online (Sandbox Code Playgroud) 我将工作服与coverage.py结合使用来跟踪测试脚本的python代码覆盖率.我使用以下命令:
coverage run --parallel-mode --source=mysource --omit=*/stuff/idont/need.py ./mysource/tests/run_all_tests.py
coverage combine
coveralls --verbose
Run Code Online (Sandbox Code Playgroud)
除了多处理之外,这非常有效.不跟踪工作池或子进程执行的代码.
是否有可能跟踪多处理代码?我遗失的任何特定选项?可能会在多处理库中添加包装器,以便在每次生成新进程时开始覆盖?
编辑:
我(和jonrsharpe,也:-)发现了一个用于多处理的猴子补丁.
但是,这对我不起作用,我的Tracis-CI版本几乎在开始后就被杀死了.我检查了我的本地机器上的问题,显然是将补丁添加到多处理程序中破坏了我的记忆.使用此修复程序,占用少于1GB内存的测试需要超过16GB.
编辑2:
猴子补丁在经过一些小修改后确实有效:删除config_file
解析(config_file=os.environ['COVERAGE_PROCESS_START']
)就可以了.这解决了臃肿记忆的问题.因此,相应的行简单地变为:
cov = coverage(data_suffix=True)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用coveralls.io来显示我的测试的覆盖徽章,但是覆盖范围标记卡在"未知"上.
相关的回购在这里:https://github.com/cfogelberg/grunt-set-app-mode
当我看到coforls.io的那个回购时,我看到了相同的"覆盖:未知"状态:coveralls.io/r/cfogelberg/grunt-set-app-mode
但是,各个版本是正确发送到coveralls.io:https://coveralls.io/builds/788669
我错过了什么?
这个问题:如何测试Go中的os.exit场景(以及其中最高的投票答案),阐述了如何os.Exit()
在go中测试场景.由于os.Exit()
不能轻易拦截,使用的方法是重新调用二进制文件并检查退出值.这个方法在Andrew Gerrand(Go团队的核心成员之一)的演示文稿第23页中描述; 代码非常简单,下面将全文转载.
相关的测试和主文件看起来像这样(请注意,这对文件本身就是一个MVCE):
package foo
import (
"os"
"os/exec"
"testing"
)
func TestCrasher(t *testing.T) {
if os.Getenv("BE_CRASHER") == "1" {
Crasher() // This causes os.Exit(1) to be called
return
}
cmd := exec.Command(os.Args[0], "-test.run=TestCrasher")
cmd.Env = append(os.Environ(), "BE_CRASHER=1")
err := cmd.Run()
if e, ok := err.(*exec.ExitError); ok && !e.Success() {
fmt.Printf("Error is %v\n", e)
return
}
t.Fatalf("process ran with err %v, want exit status 1", err)
}
Run Code Online (Sandbox Code Playgroud)
和
package …
Run Code Online (Sandbox Code Playgroud) 我正在使用 GitHub 操作配置工作服。
我进行了搜索,但找不到如何生成 ./coverage/lcov.info 文件。
当操作运行时,由于我没有这样的文件,我得到:
Using lcov file: ./coverage/lcov.info
Error: Lcov file not found.
Run Code Online (Sandbox Code Playgroud)
我尝试通过 IntelliJ 使用 Coverage 运行测试,但我可以生成的唯一导出是 HTML 格式。
如何生成 lcov.info 文件?
编辑 - 根据评论中的要求添加我的工作流程以供参考
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
name: "CodeQL"
on:
push:
branches: …
Run Code Online (Sandbox Code Playgroud) 我想跟踪使用Coveralls的go项目的测试覆盖率,使用https://github.com/mattn/goveralls进行集成参考的说明
cd $GOPATH/src/github.com/yourusername/yourpackage
$ goveralls your_repos_coveralls_token
Run Code Online (Sandbox Code Playgroud)
但是,这仅发布一个包的结果,并且依次运行包不起作用,因为最终运行会覆盖所有其他运行.有没有人想出如何获得多个包裹的报道?
我的 github 存储库配置出现问题。这是 - umbress。我启用并配置了 Github Actions CI,我希望在我的 repo 中有覆盖徽章,这样每个想要在他们的项目中使用我的代码的人都知道我的代码经过了良好的测试。但似乎我错过了一些东西,因为我的报道徽章已经有很长一段时间了。
CI步骤是:
jest --coverage --config config/jest.js
)。这将./coverage/lcov.info
在根目录中生成有几个问题:
FIRST BUILD ON DEVELOPER AT 90.072%
,但根本没有这样的百分比!覆盖的行是93.43%
,平均所有的是89.4%
)我做错了什么,我应该怎么做才能解决这个问题?
continuous-integration code-coverage coveralls github-actions
我正在尝试将代码覆盖率 % 徽章添加到我的存储库 README.md 中
我目前正在使用 Github actions 来自动化我的 pytest 测试。我自己就完成了这个工作,但我一直在努力获得覆盖率%徽章。我正在使用工作服来生成徽章,并且基于它,工作服看起来需要一个 lcov.info 文件。但是当我查看pytest-cov 的报告选项时,我没有看到相应的输出选项。
我尝试生成其他类型(例如 xml)并配置以查找此类型,但它仍然在覆盖文件夹中查找 lcov.info。下面是我当前的 pythonapp.yml 文件。当前失败的步骤是寻找工作服./coverage/lcov.info
任何有关我做错了什么或如何修复的帮助将不胜感激。
name: tests
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.7
uses: actions/setup-python@v1
with:
python-version: 3.7
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Lint with flake8
run: | …
Run Code Online (Sandbox Code Playgroud) travis ci失败,因为记者的输出是空字符串.
NODE_ENV=test YOURPACKAGE_COVERAGE=1 mocha --compilers coffee:coffee-script/register --require blanket --reporter mocha-lcov-reporter | ./node_modules/coveralls/bin/coveralls.js
Run Code Online (Sandbox Code Playgroud)
它在我的本地工作正常.
> mocha --compilers coffee:coffee-script/register --require blanket --reporter mocha-lcov-reporter | ./node_modules/coveralls/bin/coveralls.js
[error] "2015-04-26T12:41:57.904Z" 'error from lcovParse: ' 'Failed to parse string'
[error] "2015-04-26T12:41:57.906Z" 'input: ' ''
[error] "2015-04-26T12:41:57.906Z" 'error from convertLcovToCoveralls'
Run Code Online (Sandbox Code Playgroud) coveralls ×10
github ×2
go ×2
python ×2
travis-ci ×2
architecture ×1
coverage.py ×1
java ×1
lcov ×1
mocha.js ×1
pytest ×1
pytest-cov ×1
testing ×1
tox ×1
unit-testing ×1