문제

우리 회사에서 우리는 현재 사용하고 있습니다 아틀라 시안 대나무 지속적인 통합 도구. 우리는 현재 모든 프로젝트에 Java를 사용하므로 훌륭하게 작동합니다.

그러나 우리는 새로운 응용 프로그램 중 하나에 Django + Python을 사용하는 것을 고려하고 있습니다. 나는 이것을 위해 대나무를 사용할 수 있는지 궁금했다.

먼저, 대나무에 대한 친숙 함이 낮다고 말하면서, 내가 그것을 사용했지만, 구성하지 않았기 때문에 (빌드에 대한 SVN 체크 아웃 디렉토리를 변경하는 것과 같은 간단한 변경 이외).

분명히 빌드를 실행하는 데는 많은 점이 없지만 (Python 프로젝트가 실제로 빌드되지 않기 때문에) 테스트 스위트를 실행하는 데 대나무를 사용할 수 있고 대나무를 사용하여 배포 할 수 있습니다. 다양한 테스트 환경에 대한 최신 코드 Java 프로젝트와의 방식.

대나무는 파이썬 프로젝트를 통해 이러한 유형의 물건을 지원합니까?

도움이 되었습니까?

해결책

대나무는 본질적으로 쉘 스크립트를 실행하므로 다음과 같이 쉽게 될 수 있습니다.

./manage.py test

일반적으로 다음과 같이

mvn clean install

또는:

ant compile

Django 테스트 러너를 기존의 Junit XML 출력으로 출력하기 위해 마사지해야 할 수도 있으므로 대나무가 통과 한 테스트 수에 대한 예쁜 그래프를 제공 할 수 있습니다. 보다 이 게시물 xmlrunner.py를 사용하여 Python이 작업 할 수 있습니다 허드슨 강. 또한 살펴보십시오 kosexunit.

다른 팁

깨끗한 환경에서 PIP 및 VirtualEnV 용 부트 스트랩을 추가 할 수도 있습니다.

wget https://bootstrap.pypa.io/get-pip.py
python get-pip.py --root=${bamboo.build.working.directory}/tmp --ignore-installed
export PATH=${bamboo.build.working.directory}/tmp/usr/local/bin:$PATH
export PYTHONPATH=${bamboo.build.working.directory}/tmp/usr/local/lib/python2.7/dist-packages:$PYTHONPATH
pip install --root=${bamboo.build.working.directory}/tmp --ignore-installed virtualenv
virtualenv virtual_tmp
cd virtual_tmp
. bin/activate
echo Pip is located `which pip`
pip install django
pip install djangorestframework

경고, source bin/activate 인라인 스크립트 작업이 SH 파일에 저장되어 작동하지 않습니다 (따라서 bash 실행하십시오 sh 호환 모드).

편집하다

더 좋은 점은, 우리는 대나무의 주니트가 구문 분석 할 수있는 XML 출력으로 단위 테스트를 실행할 수 있습니다.

pip install unittest-xml-reporting
python manage.py test --noinput --testrunner="xmlrunner.extra.djangotestrunner.XMLTestRunner"

가능하다는 것이 밝혀졌습니다. 테스트 러너 결과와 코드 커버리지 결과의 두 가지 주요 통합 작업이 있습니다. 나는 정상적인 Python 3 코드베이스 및 표준을 가정합니다 unittest 테스트 스위트.

테스트 러너

대나무는 테스트 러너 결과를 기대합니다 Junit XML 형식. 거기 있습니다 별도의 테스트 러너 치즈 상점에서는 그러한 출력을 생산할 수 있지만 실행하려면 작은 코드를 작성해야합니다. 코드베이스를 그대로 유지하는 더 나은 방법은 사용하는 것입니다. pytest의 기능.

코드 적용 범위

대나무는 아틀라 시안 클로버의 XML 형식 만 지원합니다. 중요한 점은 Atlassian Clover 플러그인이 필요하지 않다는 것입니다 (일부 비용이 드는 라이센스). 대나무는 스스로 작동합니다.

Python de 사실상 표준 코드 커버리지 도구, 적용 범위, 다소 cobertura XML 형식을 생성하지만 변환기. 거기에 Pytest 플러그인 커버리지 도구와 통합.

해결책

여기에 있습니다 독스 pytest를 사용하여 두 대나무 통합을 모두 작동시킵니다.

[tox]
envlist   = py34
skipsdist = True

[testenv]
setenv     = LANG=C.UTF-8
basepython = python3.4
deps       = -r{toxinidir}/requirements.txt

[testenv:bamboo]
commands = 
  py.test --junitxml=results.xml \
    --cov=project_name --cov-config=tox.ini --cov-report=xml \
    --cov-report=html project_name/test
    coverage2clover -i coverage.xml -o clover.xml
deps = 
    {[testenv]deps}
    pytest
    pytest-cov
    coverage2clover

# read by pytest
[pytest]
python_files = *.py

# read by coverage
[run]
omit=project_name/test/*,project_name/__main__.py

Pytest 및 Pytest-Cov는 모두 사용합니다 tox.ini 명령 줄에서 지원되지 않는 구성의 경우. 그것은 다시 repo의 루트에 추가 혼란이없는 것을 다시 저장합니다. Pytest는 읽으려고합니다 tox.ini 자동으로. Pytest-Cov 바이 패스 .coveragerc, 그러나 그것은 또한 INI 파일이기 때문에 tox.ini 맞다.

대나무쪽에 추가하십시오 스크립트 작업 그것은 실행됩니다 tox -e bamboo. 그런 다음 추가하십시오 주니트 파스 작업 직업에. 대화에서 사용자 정의 결과 디렉토리를 지정합니다 놓다 results.xml.

커버리지 구성은 다른 방식으로 수행됩니다.

  1. 열려 있는 여러 가지 잡다한 당신의 직업의 탭
  2. 확인하다 Clover를 사용 하여이 빌드에 대한 코드 범위를 수집하십시오
  3. 고르다 Clover는 이미이 빌드에 통합되어 있으며 Clover.xml 파일이 생성됩니다.
  4. 유형 clover.xml ~ 안으로 클로버 XML 위치

enter image description here

다음 빌드 의이 시점에서 총 커버리지와 두 차트가 표시됩니다. 적용 범위 기록 그리고 코드 기록의 라인. 커버리지 도구로 대화식 HTML을 생성하는 것도 좋습니다. 따라서 특정 코드 라인으로 드릴 다운 할 수 있습니다.

위에서 만든 설정 (적어도 대나무 5.7)이 만들어졌습니다. 클로버 보고서 (시스템) 안에 인공물 직업의 탭. 그것을 열고 설정하십시오 htmlcov 에게 위치 필드 및 *.* 에게 복사 패턴. 대나무는 이제 HTML 보고서를 수집합니다. 당신은 그것을 볼 수 있습니다 클로버 계획의 탭.

pytest를 사용하는 경우 간단히 사용할 수 있습니다 py.test --junitxml=/path/to/results/xml/file.xml

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top