我已經使用Django-rest-framework視圖集和路由器公開了我的數據庫模型,並且正在嘗試爲它編寫單元測試。如何編寫django-rest-framework api的單元測試?
這裏是我的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)
我不想連接到數據庫用於單元測試,因爲它屬於集成測試。
有什麼辦法模擬數據庫嗎?我知道如何對標準視圖函數應用嘲諷,但這裏嘲笑不起作用。
- 如何爲我的REST-API編寫單元測試?
- 如何在單元測試中模擬數據庫?
我對這個項目並不熟悉,所以我無法專門幫助您,但請查看文檔以查找哪些類/函數實際連接到數據庫並在您的測試中進行模擬。 –
如果你想測試API,你根本不能使用單元測試。測試API意味着調用視圖並從測試數據庫接收格式良好的數據。這將是你寫的一個集成測試。單元測試和集成測試之間的區別不僅在於觸及數據庫。 – Norman8054