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)
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"})
Code: Select all
item_set = {item.name for item in Item.objects.all()}
my_class_object = MyClass(item_set)
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!