मैंने Django-rest-framework view sets और राउटर का उपयोग करके अपना डेटाबेस मॉडल उजागर किया है, और मैं इसके लिए यूनिट परीक्षण लिखने की कोशिश कर रहा हूं।django-rest-framework api के लिए यूनिट परीक्षण कैसे लिखें?
यहाँ मेरी एपीआई और परीक्षण कोड
Viewsets.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
यूनिट परीक्षण
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)
हैं जो मुझे नहीं चाहिए डेटाबेस से कनेक्ट करने के लिए इकाई परीक्षण के लिए क्योंकि यह एकीकरण परीक्षण के तहत आता है।
क्या डेटाबेस को नकल करने का कोई तरीका है? मुझे पता है कि मानक दृश्य कार्यों के लिए मॉकिंग कैसे लागू करें, लेकिन यहां मॉकिंग काम नहीं कर रही है।
- मेरे आरईएसटी-एपीआई के लिए यूनिट परीक्षण कैसे लिखें?
- मेरे यूनिट-परीक्षण में डेटाबेस का नकल कैसे करें?
मैं इस परियोजना से परिचित नहीं हूं इसलिए मैं विशेष रूप से आपकी मदद नहीं कर सकता हूं लेकिन दस्तावेज में यह देखने के लिए कि कौन सा वर्ग/फ़ंक्शन वास्तव में डेटाबेस से कनेक्ट हो रहा है और आपके परीक्षणों में नकली है। –
यदि आप एपीआई का परीक्षण करना चाहते हैं तो आप इकाई परीक्षण का उपयोग नहीं कर सकते हैं। एपीआई का परीक्षण करने का अर्थ है परीक्षण को कॉल करना और परीक्षण डेटाबेस से अच्छी तरह से गठित डेटा प्राप्त करना। जैसा कि आपने लिखा था यह एक एकीकरण परीक्षण होगा। इकाई और एकीकरण परीक्षण के बीच का अंतर न केवल डेटाबेस को छू रहा है या नहीं। – Norman8054