Il s'avère que c'est possible. Il y a deux tâches d'intégration principales: les résultats du testeur et les résultats de la couverture du code. Je suppose la base de code Python 3 normale et la suite de tests standard unittest
.
test coureur
Bamboo attend les résultats de coureur de test dans JUnit XML format. Il ya separate test runner sur le magasin de fromage capable de produire une telle sortie, mais il faudrait que vous écrivez un petit code pour l'exécuter, ce qui n'est pas agréable. Une meilleure façon de garder la base de code intacte est d'utiliser les fonctionnalités de pytest.
couverture Code
Bamboo ne supporte que le format XML de Clover Atlassian. Remarque importante ici: vous n'avez pas besoin du plugin Atlassian Clover activé (et d'une licence qui coûte un peu d'argent). Bamboo travaille seul.
L'outil de couverture de code standard Python de fait, coverage, produit quelque peu format Cobertura XML, mais il y a un converter. Il y a un pytest plugin pour l'intégration avec l'outil de couverture.
Solution
est ici l'environnement Tox où je pytest pour faire le travail à la fois des intégrations de bambou.
[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
Notez que les deux pytest et pytest-CoV utilisation tox.ini
pour la configuration non pris en charge sur la ligne de commande. Encore une fois, cela vous évite d'avoir un fouillis supplémentaire à la racine de votre repo. pytest essaie de lire tox.ini
automatiquement. pytest-cov contourne .coveragerc
, mais parce que c'est aussi un fichier INI, tox.ini
correspond. Sur le côté Bambou, ajoutez un script task qui exécute tox -e bamboo
. Ensuite, ajoutez le au travail. Dans son dialogue, sous Spécifier les répertoires de résultats personnalisés mettre results.xml
.
La configuration de la couverture est effectuée d'une autre manière.
- Ouvert Divers onglet de votre travail
- Check Utilisez Clover pour recueillir la couverture du code pour cette construction
- Select Clover est déjà intégré dans cette version et un fichier clover.xml sera produit
- type
clover.xml
en XML Clover Lieu

À ce stade, lors de la construction prochaine, vous verrez une couverture totale et deux tableaux: histoire de couverture et lignes de l'histoire de code. Il est également agréable d'avoir du HTML interactif produit par l'outil de couverture, de sorte que vous pouvez explorer jusqu'à une certaine ligne de code.
Les réglages effectués ci-dessus (au moins en bambou 5.7) a créé Rapport Clover (Système) dans-artefact onglet travail. Ouvrez-le et définissez htmlcov
sur Emplacement champ et *.*
sur Copie modèle. Bamboo va maintenant collecter les rapports HTML. Vous pouvez le voir à Clover onglet de votre plan.
Ancienne question. Mais j'ai ajouté py.test en tant qu'exécutable Bamboo et je l'utilise simplement pour lancer les tests (avec la sortie junit-xml spécifiée).Ensuite, l'analyseur de test JUnit doit être exécuté en tant que travail distinct. –
@ SamuelO'Malley pouvez-vous poster un exemple de la façon dont vous avez eu ce travail? – MikeyE
@MikeyE - J'ai effectivement changé la façon dont cela est fait depuis que ce commentaire a été posté. Maintenant, j'étais une tâche de script Bamboo et j'ai le contenu comme 'py.test --junit-xml results.xml' et après cela j'ai' if [$? -ne 0]; puis écho "Échec du test"; fi' pour avaler le code de retour. Sinon, Bamboo ne vous permettra pas de mettre en quarantaine un résultat de test individuel et marquera l'ensemble du Job comme ayant échoué. –