Django-Tests – Laden von Daten in die Datenbank vor dem Laden der AppsPython

Python-Programme
Guest
 Django-Tests – Laden von Daten in die Datenbank vor dem Laden der Apps

Post by Guest »

Ich schreibe derzeit einige Tests für eine Django-App (+ REST-Framework) und habe einige Probleme beim Laden der Testdaten in die Datenbank.

Lassen Sie es mich erklären mit etwas (sehr vereinfachtem) Code:

Ich habe eine Django-Ansicht, die etwa so aussieht:

view.py

Code: Select all

from myapp.models import Item
from myapp.utils import MyClass

# need to initialize with the set of items
item_set = {item.name for item in Item.objects.all()}
my_class_object = MyClass(item_set)

class MyView(APIView):
def post(selfself, request):
result = my_class_object.process(request.data)
return Response(result)
Im Grunde muss ich also eine Klasse mit einigen Daten aus der Datenbank initialisieren und diese Klasse dann meiner Ansicht nach verwenden, um die vom Endpunkt empfangenen Daten zu verarbeiten.

Jetzt der Test:

my_test.py

Code: Select all

from rest_framework.test import APILiveServerTestCase
from myapp.models import Item

class MyTest(APILiveServerTestCase):

def setUp(self):
self.URL = '/some_url_linking_to_myview/'

# load some data
Item.objects.create(name="first item")
Item.objects.create(name="second item")

def test_myview_return_correct_result(self):
post_data = {"foo"}
response = self.client.post(self.URL,
data=post_data,
format='json')
self.assertEqual(response.status_code, 200)
self.assertEqual(response.data, {"my_expected_result"})
Beim Ausführen des Tests passiert derzeit, dass view.py vor der Methode setUp() geladen wird ausgeführt werden, also wenn ich die Klasse mit diesen beiden Zeilen instanziiere:

Code: Select all

item_set = {item.name for item in Item.objects.all()}
my_class_object = MyClass(item_set)
Die Datenbank ist noch leer.

Ich frage mich, ob es eine Möglichkeit gibt, die Daten abzurufen in die Datenbank einfügen, bevor view.py ausgeführt wird, oder vielleicht irgendwie das Neuladen der App nach setUp() erzwingen, oder meine Klasse woanders instanziieren, damit sie nach dem Laden der Daten aufgerufen wird?

Danke!

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post