Resulta que es posible. Hay dos tareas de integración principales: resultados de prueba de corredor y resultados de cobertura de código. Asumo la base de código Python 3 normal y la suite de prueba estándar unittest
.
corredor de prueba
bambú espera resultados corredor de prueba en JUnit XML format. Hay un separate test runner en la tienda de quesos capaz de producir tal salida, pero requeriría que escriba un pequeño código para ejecutarlo, lo cual no es agradable. Una mejor manera de mantener la base de código intacta es usar las características de pytest.
cobertura de código
bambú sólo es compatible con el formato XML de Atlassian trébol. Nota importante aquí es que no necesita el plugin de Atlassian Clover habilitado (y la licencia para ello, que cuesta algunos dólares). Bamboo funciona por sí mismo.
La herramienta de cobertura de código estándar de Python de facto, coverage, produce un poco de formato XML Cobertura, pero hay un converter. Hay un pytest plugin para la integración con la herramienta de cobertura.
Solución
Aquí está el ambiente Tox donde solía PYtest hacer tanto integraciones de bambú trabajo.
[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
Tenga en cuenta que tanto PYtest y el uso PYtest-CoV tox.ini
para la configuración que no es compatible en la línea de comandos. De nuevo le evita tener desorden adicional en la raíz de su repositorio. Pytest intenta leer tox.ini
automáticamente. pytest-cov pasa a .coveragerc
, pero debido a que también es un archivo INI, tox.ini
encaja.
En el lado de bambú agregue un script task que ejecuta tox -e bamboo
. A continuación, agregue JUnit parse task al trabajo. En su diálogo, bajo Especifique los directorios de resultados personalizados ponga results.xml
.
La configuración de cobertura se realiza de otra manera.
- abierto Varios pestaña de su trabajo
- Comprobar Uso del trébol para recoger cobertura de código para esta construcción
- Seleccionar Clover ya está integrado en esta construcción y se producirá un archivo clover.xml
- Tipo
clover.xml
en trébol XML Ubicación
En este punto en su próxima construcción verá la cobertura total y dos tablas: historia Cobertura y Líneas de historial de códigos. También es bueno tener HTML interactivo producido por la herramienta de cobertura, por lo que puede profundizar en cierta línea de código.
Los ajustes realizados anteriormente (por lo menos en 5,7 bambú) ha creado trébol Informe (Sistema) en Artefacto pestaña de trabajo. Ábralo y establezca htmlcov
en Ubicación campo y *.*
en Copie el patrón. Bamboo ahora recopilará los informes HTML. Puede verlo en ficha Clover de su plan.
Pregunta anterior. Pero he agregado py.test como un ejecutable de Bamboo y simplemente lo utilizo para ejecutar las pruebas (con la salida junit-xml especificada).Entonces el analizador de prueba JUnit debe ejecutarse como un trabajo por separado. –
@ SamuelO'Malley puede publicar un ejemplo de cómo lo hizo funcionar? – MikeyE
@MikeyE - De hecho, he cambiado la forma en que se hace desde que se publicó este comentario. Ahora era una tarea de script de bambú y tengo el contenido como 'py.test --junit-xml results.xml' y después de eso tengo' if [$? -ne 0]; luego echo "Prueba fallida"; fi' tragar el código de retorno. De lo contrario, Bamboo no le permitirá poner en cuarentena el resultado de una prueba individual y marcará todo el Trabajo como fallido. –