Exemple test.py
fichier :
import torch
def one():
return torch.tensor(0.0132005215)
def two():
return torch.tensor(4.4345855713e-05)
def three():
return torch.tensor(7.1525573730e-07)
def test_method(method, expected_value):
value = method()
assert(torch.isclose(value, expected_value))
def test_one():
test_method(one, torch.tensor(0.0132005215))
def test_two():
test_method(two, torch.tensor(4.4345855713e-05))
def test_three():
test_method(three, torch.tensor(7.1525573730e-07))
# test_method(three, torch.tensor(1.0))
if __name__ == '__main__':
test_one()
test_two()
test_three()
En gros, j'ai quelques fonctions que je veux tester (appelées ici one
, two
y three
), tous avec la même signature mais des internes différents. Ainsi, au lieu d'écrire des fonctions test_one()
, test_two()
etc. et donc de dupliquer du code, j'ai écrit une "fabrique de fonctions" (est-ce le bon terme ?) test_method
qui prend en entrée la fonction, les résultats attendus et renvoie le résultat d'une fonction assert
commandement.
Comme vous pouvez le voir, pour l'instant les tests sont effectués manuellement : Je lance le script test.py
regardez l'écran, et si ce n'est pas le cas Assertion error
est imprimé, je suis content. Bien sûr, j'aimerais améliorer cela en utilisant pytest
Il s'agit de l'un des cadres de test Python les plus simples et les plus utilisés. Le problème est qu'en regardant pytest
documentation J'ai eu l'impression que pytest
va essayer d'exécuter toutes les fonctions dont le nom commence par test_
. Bien sûr, les tests test_method
lui-même n'a aucun sens. Pouvez-vous m'aider à refactoriser ce test script, afin que je puisse le lancer avec pytest
?