????????我在另一篇的文章?gitlab ci/cd 服務(wù)自動化探索 - 簡書介紹了我對ci/cd的探索,這次我來分享一下關(guān)于測試報告及覆蓋率在gitlab項目的集成, 這個對一個管理者來說這是個極其方便的檢查代碼工覆蓋率的工具,同時也是一個程序員很好的自我修行的體現(xiàn)。
? ? 我們先來看一下效果, 這個是一個項目的readme文件,我們很容易看到現(xiàn)在的代碼覆蓋率
我們在看看測試報告, 這里我為了安全就不打開相關(guān)網(wǎng)頁了
這里我們會在index.html看到每個文件的測試覆蓋率和總的覆蓋率
在我們看完效果之后我們開始教程, 因為在?gitlab ci/cd 服務(wù)自動化探索 - 簡書中我詳細(xì)介紹過gitlab中.gitlab-ci的寫法,這里我就不詳細(xì)寫了, 首先在項目中安裝cover
pip install coverage
這是官方教程Coverage.py — Coverage.py 4.5.2 documentation
我們主要使用這個命令生成整個測試報告
coverage html
這是.gitlab-ci文件,詳細(xì)注釋
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拷貝到宿主機(jī), 這里是因為我們使用的是shell, gitlab-runner是在宿主機(jī)上
? - 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
這里標(biāo)注一下
[](。。。)
到此結(jié)束