如何在gitlab 加入測試報告及覆蓋率

????????我在另一篇的文章?gitlab ci/cd 服務自動化探索 - 簡書介紹了我對ci/cd的探索,這次我來分享一下關于測試報告及覆蓋率在gitlab項目的集成, 這個對一個管理者來說這是個極其方便的檢查代碼工覆蓋率的工具,同時也是一個程序員很好的自我修行的體現。

? ? 我們先來看一下效果, 這個是一個項目的readme文件,我們很容易看到現在的代碼覆蓋率

1

我們在看看測試報告, 這里我為了安全就不打開相關網頁了


2

這里我們會在index.html看到每個文件的測試覆蓋率和總的覆蓋率


3

在我們看完效果之后我們開始教程, 因為在?gitlab ci/cd 服務自動化探索 - 簡書中我詳細介紹過gitlab中.gitlab-ci的寫法,這里我就不詳細寫了, 首先在項目中安裝cover

pip install coverage

這是官方教程Coverage.py — Coverage.py 4.5.2 documentation

我們主要使用這個命令生成整個測試報告

coverage html

這是.gitlab-ci文件,詳細注釋

variables:

...

stages:

? - build

? - test

? - deploy

build:

? stage: build

? tags:

? ? - dev

? script:

? ? - docker build -t "${IMAGE_NAME}:lastest" .

? ? - docker image tag "${IMAGE_NAME}:lastest" "${IMAGE_NAME}:$CI_COMMIT_SHA"

? ? - docker push "${IMAGE_NAME}:lastest"

? ? - docker push "${IMAGE_NAME}:$CI_COMMIT_SHA"

test:

? stage: test

? tags:

? ? - dev

? variables:

? ? test_log_dir: "/data/logs/"

? ? profile_path: "/data/app/profile/test.env"

? ? postgres_name: "test_postgres"

? ? LOG_DIR: "/data/logs/"

? ?name: test

? ? port: "654"

? ? postgres_port: "653"

? before_script:

? ? - docker stop "${postgres_name}" && docker rm "${postgres_name}" || true

? ? - docker stop "${name}_1" && docker rm "${name}_1" || true

? script:

? ?- docker run -d -p "${port}:8000" -v $LOG_DIR:$test_log_dir --name "${name}_1" --env-file "${profile_path}" "${IMAGE_NAME}:${CI_COMMIT_SHA}"

? - sleep 3

? # - docker exec -i "${monitor_name}_1" python manage.py test

? # - docker stop "${monitor_name}_1" && docker rm "${monitor_name}_1" || true

? - docker exec -i "${monitor_name}_1"? coverage run --source='.' manage.py test

? - docker exec -i "${monitor_name}_1"? coverage report -m

? - docker exec -i "${monitor_name}_1"? coverage html? # 我們在容器中生成了htmlcov

? - docker cp? "${monitor_name}_1":/code/htmlcov ./? ?# 將htmlcov拷貝到宿主機, 這里是因為我們使用的是shell, gitlab-runner是在宿主機上

? - mv htmlcov public? # 重命名一下

? coverage: '/^TOTAL\s+\d+\s+\d+\s+(\d+\%)$/'? # 這里的正則匹配這個覆蓋率的值

? artifacts:??

? paths:

? - public? # 這里是將public文件夾上傳

? expire_in: 7 day? # 這里表示文件暫存7天


在.gitlab-ci配置完成之后我們要在readme中的添加markdown的代碼

gitlab會在項目中ci/cd配置中給出提示, 有三種格式, 分別是markdown、html、asciidoc


這里標注一下

[![pipeline status](<gitlab域名>/<組>/<項目>/badges/<分支>/pipeline.svg?job=<job名>)](。。。)

到此結束

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容