unittest Vs pytest

Dans unittest, je peux le programme d'installation de variables dans une classe et les méthodes de cette classe peut choisir selon la variable on veut l'utiliser...

class test_class(unittest.TestCase):
    def setUp(self):        
        self.varA = 1
        self.varB = 2
        self.varC = 3
        self.modified_varA = 2

    def test_1(self):
        do_something_with_self.varA, self.varB

    def test_2(self):
        do_something_with_self_modified_varA, self.varC

Donc dans unittest, il a été facile de mettre des tas de tests qui pourraient se retrouver dans une classe, puis de nombreuses variables différentes (varA et varB) pour les différentes méthodes. Dans pytest, j'ai créé un incontournable dans conftest.py au lieu d'une classe dans unittest, comme ça...

@pytest.fixture(scope="module")
def input1():
    varA = 1
    varB = 2
    return varA, varB

@pytest.fixture(scope="module")
def input2():
    varA = 2
    varC = 3
    return varA, varC

Je me nourris de ce input1 et input2 de mes fonctions dans un autre fichier (disons test_this.py) pour deux fonctions différentes. Voici les questions basées sur les informations ci-dessus...

  1. Puisque je ne peux pas il suffit de déclarer des variables locales dans conftest.py comme je ne peux pas tout simplement d'importer ce fichier. Est-il une meilleure façon de déclarer des variables différentes ici qui peut être utilisé dans différentes fonctions dans test_this.py ? J'ai cinq configurations différentes dans mon test pour ces variables, la définition que de nombreux appareils différents dans conftest.py et de les utiliser comme argument de fonction dans cinq fonctions différentes dans test_this.py sons douloureux, je préfère revenir à unittest la structure de la classe, définir mes variables et de choisir ce que je veux

  2. Devrais-je déclarer des variables globales dans test_this.py et de les utiliser dans les fonctions de la façon que je veux ? Semble un peu pas pythonic. Ces variables ne sont utilisés que par les fonctions de ce fichier.

  3. Disons que j'ai test_that.py et test_them.py ainsi. Si j'ai des variables partagées entre ces différents fichiers, comment pourrais-je les déclarer ? il suffit de créer un fichier à la calle variables.py dans le répertoire où tous ces fichiers de test et de faire une importation à chaque fois que j'ai besoin ? De cette façon, je peux garder toutes les données dans un document distinct.

  4. Est-ce mon impression que pytest déconseille d'utiliser une classe pour organiser vos fonctions ? Chaque exemple j'ai lu en ligne, tout semble employer des tas de fonctions avec accessoires. Ce qui est une configuration de classe de définition et de méthodes et d'organiser des tests dans pytest ?

  5. J'ai un scénario de test où je dois utiliser le résultat d'une fonction à l'autre. Avec pytest, j'ai une assertion qui est à la fin d'une fonction, pas un retour, donc je ne vais pas être en mesure d'utiliser cette fonction comme un incontournable. Comment dois-je accomplir ? Je sais que ce n'est pas une bonne pratique que mon test s'appuie sur l'autre, mais est-il un travail ?

Merci d'avance pour vos réponses.

OriginalL'auteur LuckyStarr | 2015-01-14