2017-07-13 1 views
0

Besoin d'exécuter le même test sur différents périphériques. Fixture utilisée pour donner les adresses IP des périphériques, et tous les tests exécutés pour les IP fournies par les appareils en tant que demandes. Mais en même temps, besoin d'ajouter le nom du test avec l'adresse IP pour analyser rapidement les résultats. Les résultats pytest ont un nom de test identique pour tous les params, seulement dans le journal ou l'instruction nous pouvons voir le paramètre utilisé, est-il possible de changer le nom du test en ajoutant le param au nom du test basé sur les params fixture?comment renommer un nom de test dans pytest en fonction du paramétrage

class TestClass: 

    def test1(): 
     pass 

    def test2(): 
     pass 

Nous devons exécuter toute la classe de test pour chaque périphérique, toutes les méthodes de test en séquence pour chaque périphérique. Nous ne pouvons pas exécuter chaque test avec un cycle de paramétrage, nous devons exécuter toute la classe de test dans un cycle de paramètres. C'est ce que nous avons réalisé par une implémentation de fixture, mais nous n'avons pas pu renommer les tests.

+0

Il se peut que vous deviez utiliser des paramètres. –

Répondre

0

Vous n'avez pas besoin de changer le nom du test. Le cas d'utilisation que vous décrivez est exactement ce que sont les appareils paramétrés.

Par le pytest docs, voici la sortie d'un exemple de test. Remarquez comment les valeurs d'appareils sont incluses dans la sortie d'erreur juste après le nom du test. Cela rend évidents les cas de tests qui échouent.

$ pytest 
======= test session starts ======== 
platform linux -- Python 3.x.y, pytest-3.x.y, py-1.x.y, pluggy-0.x.y 
rootdir: $REGENDOC_TMPDIR, inifile: 
collected 3 items 

test_expectation.py ..F 

======= FAILURES ======== 
_______ test_eval[6*9-42] ________ 

test_input = '6*9', expected = 42 

    @pytest.mark.parametrize("test_input,expected", [ 
     ("3+5", 8), 
     ("2+4", 6), 
     ("6*9", 42), 
    ]) 
    def test_eval(test_input, expected): 
>  assert eval(test_input) == expected 
E  AssertionError: assert 54 == 42 
E  + where 54 = eval('6*9') 

test_expectation.py:8: AssertionError 
======= 1 failed, 2 passed in 0.12 seconds ======== 
+0

J'ai modifié la question, en clarifiant le scénario exact, avez-vous des suggestions? – karthik