2013-03-06 1 views
2

J'ai plusieurs milliers de tests que je veux exécuter en parallèle. Les tests sont tous des binaires compilés qui donnent un code retour de 0 ou non nul (en cas d'échec). Certains sous-ensembles inconnus essaient d'utiliser les mêmes ressources (fichiers, ports, etc.). Chaque test suppose qu'il s'exécute indépendamment et signale simplement un échec si une ressource n'est pas disponible. J'utilise Python pour lancer chaque test en utilisant le module de sous-processus, et cela fonctionne très bien en série. J'ai regardé dans Nose pour la parallélisation, mais j'ai besoin d'autogénérer les tests (pour emballer chacun des 1000+ binaires dans la classe Python qui utilise le sous-processus) et le module multi-traitement de Nose ne supporte pas la parallélisation des tests générés automatiquement.Contrôler la distribution des tests avec py.test xdist

Je me suis finalement installé sur PyTest parce qu'il peut exécuter des tests autogénérés sur des hôtes distants via SSH avec le plugin xdist.

Cependant, pour autant que je sache, il ne semble pas que xdist supporte un quelconque contrôle de la distribution des tests. Je veux lui donner un pool de N machines, et avoir un test par machine.

Est ce que je veux possible avec PyTest/xdist? Sinon, y a-t-il un outil qui peut faire ce que je cherche?

+0

étiez-vous capable de trouver un moyen de le faire avec py.test xdist? "Je veux lui donner un pool de N machines, et avoir un test par machine" Si ce n'est pas avec xdist, avez-vous une autre solution? – sridhar249

Répondre

0

Je ne sais pas si cela aiderait. Mais si vous savez à l'avance comment vous voulez répartir vos tests, au lieu d'avoir vos tests à distribuer, vous pouvez utiliser votre serveur d'intégration continue pour appeler un cycle de test différent pour chaque machine différente. En utilisant -k ou -m pour sélectionner un sous-ensemble de tests, ou en spécifiant simplement différents chemins de répertoires de tests, vous pouvez contrôler quels tests sont exécutés ensemble.

Questions connexes