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...
-
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
-
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.
-
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.
-
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 ?
-
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
Vous devez vous connecter pour publier un commentaire.
1) tout d'Abord, vous pouvez déclarer ces appareils, non seulement dans conftest.py mais, dans chaque module python que vous voulez. Et vous pouvez importer ce module.
Vous pouvez également utiliser les luminaires de la même manière que vous avez utilisé la méthode de configuration:
ou vous pouvez définir des variables distinctes dans les luminaires à tubes séparés:
ou de faire un montage qui renvoie toutes les variables (pourquoi pas?)
ou même faire indirects paramétrées appareil qui renvoie à des variables de votre choix (assez confus):
Ou bien vous pouvez vous rendre luminaire d'usine qui permettra de faire des montages pour vous à la volée. Sonne curieusement quand vous avez seulement 5 essais et 5 configurations de variables, mais quand vous obtenez des centaines de fois, il peut être utile.
3) De cource vous le pouvez. Mais je vous recommande de ne pas importer ce fichier directement, mais utiliser l'option de ligne de commande pointant vers ce fichier à importer. Dans ce cas, vous pouvez cohoose un autre fichier avec des variables sans changer votre code.
4) j'utilise les classes, dans mes tests, parce que j'ai migré de nosetest. Je n'ai pas mentionné aucun problème avec l'aide de classes dans pytest.
5) Dans ce cas je vous propose de faire ce qui suit:
fist faire la fonction avec les actions souhaitées:
ensuite l'utiliser à la fois dans le test de fixation:
Merci, cela m'a beaucoup aidé dans la migration de unittest à py.test. Un commentaire cependant: je pense qu'au lieu de
@pytest.usefixtures
@pytest.mark.usefixtures
doit être utilisé.OriginalL'auteur Ilya Karpeev