2017-08-17 38 views
10

Chcę uruchomić wszystkie moje testy pytest równolegle, zamiast sekwencyjnie.testy testu równoległego

moja obecna konfiguracja wygląda następująco:

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... 

biegnę moich testów z wykorzystaniem pytest -v -s.

Powoduje to, że moje testy są uruchamiane sekwencyjnie, co zajmuje dużo czasu, ponieważ niektóre z nich czekają na odpowiedzi ze zdalnych serwerów (testy integracji).

Czy istnieje jakikolwiek sposób uruchomienia programu pytest równolegle?

+4

Wygląda na to, czego szukasz: https://docs.pytest.org/en/3.0.1/xdist.html –

Odpowiedz

3

Chcesz pytest-xdist. Myślę, że Qxf2 wyjaśnia to całkiem dobrze: Qxf2 on Pytest-Xdist

Ich wiersz poleceń Linuksa jest nieco zbyt szczegółowy dla mojego gustu; Używam:

pytest -n <NUM> 

gdzie <NUM> jest liczba pracowników równoległych.