Veritabanı modelimi Django-rest-framework görünüm kümelerini ve yönlendiricileri kullanarak açığa çıkardım ve bunun için birim sınamalarını yazmaya çalışıyorum. İşte Django-rest-framework api'nin birim testleri nasıl yazılır?
benim API ve test koduViewsets.py
class Model1ViewSet(viewsets.ReadOnlyModelViewSet):
model = Model1
serializer_class = Model1Serializer
filter_class = Model1Filter
filter_backends = (filters.DjangoFilterBackend, filters.OrderingFilter)
ordering = ('id', 'cl1')
Serializer.py
class Model1Serializer(serializers.HyperlinkedModelSerializer):
chip = serializers.HyperlinkedRelatedField(view_name="some-detail")
class Meta:
model = Model1
fields = ('url', 'id', 'cl1', 'cl2', 'cl3', 'cl4')
depth = 1
Birim-testler
from rest_framework.test import APIClient
class TestModel1Api(unittest.TestCase):
def setUp(self):
self.client = APIClient()
def test_Model1_list(self):
response = self.client.get(reverse('Model1-list'))
self.assertEqual(response.status_code, status.HTTP_200_OK)
def test_Model1_detail(self):
mm_objs = Model1.objects.all()
if mm_objs:
response = self.client.get(reverse('Model1-detail', args=[mm_objs[0].id]))
self.assertEqual(response.status_code, status.HTTP_200_OK)
I istemiyorum veritabanına bağlanmak ünite testleri için entegrasyon testleri altındadır.
Veritabanıyla dalga geçmenin bir yolu var mı? Standart görünüm işlevleri için alaylamayı nasıl uygulayacağımı biliyorum ama burada alay çalışmıyor.
- REST-API'm için birim sınamaları nasıl yazılır?
- Veritabanım birim testlerimde nasıl takılır?
Bu projeye aşina değilim, bu yüzden size orada özellikle yardımcı olamıyorum, ancak hangi sınıfa/işlevin gerçekten veritabanına bağlandığını ve testlerinizde olduğunu anlayabilmek için belgelere bakın. –
Eğer API'yi test etmek isterseniz, hiç bir birim testi kullanamazsınız. API'yi test etmek, görünümü çağırmak ve test veritabanından iyi biçimlendirilmiş verileri almak anlamına gelir. Bu yazdığınız gibi bir entegrasyon testi olurdu. Ünite ve entegrasyon testleri arasındaki fark sadece veritabanına dokunmakla kalmamakta. – Norman8054