2017-08-17 1 views
10

Je veux exécuter tous mes tests pytest en parallèle au lieu de séquentiellement.tests pytest run parallel

ma configuration actuelle ressemble à:

class Test1(OtherClass): 
    @pytest.mark.parametrize("activity_name", ["activity1", "activity2"]) 
    @pytest.mark.flaky(reruns=1) 
    def test_1(self, activity_name, generate_test_id): 
    """ 
    """ 

     test_id = generate_random_test_id() 
     test_name = sys._getframe().f_code.co_name 

     result_triggers = self.proxy(test_name, generate_test_id, test_id, activity_name) 

     expected_items = ["response"] 
     validate_response("triggers", result_triggers, expected_items) 


    @pytest.mark.parametrize("activity_name", ["activity1", "activity2"]) 
    @pytest.mark.flaky(reruns=1) 
    def test_2(self, activity_name, generate_test_id): 
    """ 
    """ 

     #same idea... 

je lance mes tests à l'aide pytest -v -s.

Le résultat est que mes tests s'exécutent séquentiellement, ce qui prend beaucoup de temps puisque certains d'entre eux attendent des réponses de serveurs distants (tests d'intégration).

Existe-t-il un moyen de faire fonctionner pytest en parallèle?

+4

Cela semble être ce que vous cherchez: https://docs.pytest.org/fr/3.0.1/xdist.html –

Répondre

3

Vous voulez pytest-xdist. Je pense que Qxf2 explique très bien: Qxf2 on Pytest-Xdist

Leur ligne de commande Linux est légèrement trop verbeuse à mon goût cependant; J'utilise:

pytest -n <NUM> 

où <NUM> est le nombre de travailleurs parallèles.