Dans le post précédent, j'ai écrit pytest dans la balise mais seulement "J'utilise pytest", donc c'est un mémorandum.
pip install pytest
pip install pytest-django
pip install pytest-pythonpath
Après cela, créez un fichier de paramètres pour pytest.
Créez un fichier appelé test_hoge.py
test_hoge.py
import pytest
@pytest.mark.django_db(transaction=True)
def test_hoge(self):
result = foo.get_money(id=1)
assert result == 100
Et
py.test test_hoge.py --create-db (ou--reuse-db)
Exécutez le test sur. Si vous spécifiez un répertoire au lieu d'un nom de fichier, tous les tests de ce répertoire seront exécutés. Si vous prenez le nom de méthode "test_", le test ne sera pas exécuté.
Cette configuration () est effectuée avant d'exécuter tous les tests décrits dans le fichier de test. Je fais souvent de la création d'utilisateurs et du traitement de préparation aux tests. setup()
def setup(self):
hoge()
teardown() Décrit le processus à exécuter à la fin de chaque test. Si vous remplacez les données de base par les données de test dans setup () et que vous les testez, le processus de restauration est inclus.
def teardown():
foo()
pytest.raises(Exception) Il est utilisé pour vérifier si une exception s'est produite correctement. Si une exception se produit, le test renverra un résultat normal.
hoge.py
[Cible de test]
class Hoge():
def foo(id):
try:
return ItemMaster.get(id)
except DoesNotExist:
raise IllegalIdError
test_hoge.py
import pytest
import IllegalIdError
@pytest.mark.django_db(transaction=True)
def test_foo():
with pytest.raises(IllegalIdError):
Hoge.foo(-100000)
Spécifiez les conditions pour ignorer le test. S'il est ignoré lorsque le test est exécuté, "s" sera affiché dans le résultat, il est donc plus facile de comprendre que "le test n'a pas été effectué" plutôt que de prendre le nom de la méthode "test_" et de ne pas l'exécuter.
test_hoge.py
@pytest.mark.skipif("True")
def test_hoge(self):
assert is_hoo(id=1)
↑ Dans ce cas, il sera toujours ignoré.
Recommended Posts