[PYTHON] Pin factory_boy Startwert in Django

Fazit

Erstellen Sie eine benutzerdefinierte Klasse, die von "TestCase" erbt, und legen Sie den Startwert in "setUp ()" fest. Jede App erbt eine benutzerdefinierte Klasse und schreibt einen Test.

Hintergrund

Ich wollte die Reproduzierbarkeit des Tests sicherstellen, wenn ich factory_boy mit Django verwende.

Verfahren

Umgebung

factory-boy==2.12.0

BaseTestCase Klassendefinition

Definieren Sie eine BaseTestCase-Klasse, die den Startwert festlegt. Ich schreibe eine Basisanwendung und schreibe dort abstrakte Klassen.

python:./base/tests.py


from django.test import TestCase
import factory.random


class BaseTestCase(TestCase):
    def setUp(self):
        factory.random.reseed_random(0)
        return super().setUp()

Vererbung einzelner TestCase-Klassen

Erben Sie die BaseTestCase-Klasse und definieren Sie jeden Testfall.

python:./user/tests.py


from base.tests import BaseTestCase

from .models import User
from .factories import UserFactory


class UserTestCase(BaseTestCase):
    def test_create_user(self):
        user = UserFactory()
        actual_user = User.objects.get(pk=user.pk)
        self.assertEqual(user, actual_user)

Rufen Sie beim Definieren von "setUp ()" natürlich auch die Methode der übergeordneten Klasse auf.

python:./user/tests.py


class UserTestCase(BaseTestCase):
    def setUp(self):
        super().setUp()
        print("initialize")

    def test_create_user(self):
        user = UserFactory()
        actual_user = User.objects.get(pk=user.pk)
        self.assertEqual(user, actual_user)

Zusammenfassung

Durch Festlegen des Startwerts kann der Test mit garantierter Reproduzierbarkeit durchgeführt werden. Dieser Artikel basiert auf Django, sollte aber nicht nur für Django gelten.

Recommended Posts

Pin factory_boy Startwert in Django
Modell in Django
Form in Django
Modelländerungen in Django
Leistungsoptimierung in Django 3.xx.
PHP var_dump-like in Django-Vorlage
Behandeln Sie Konstanten in Django-Vorlagen
Implementieren Sie die Follow-Funktion in Django
Benennen Sie Tabellenspalten in Django3 um
Berechnung des Scherspielwerts in Python
Ausgabe der Tabellenstruktur in Django
Zeigen Sie Django ManyToManyField in der Vorlage