Django rest framework 接口 測試

以前接口測試都是用postman或者瀏覽器手動搞,費時費力,最近重構,把測試方法也梳理一下。
項目主要功能就是對數據庫的增刪改查,還有調用openstack接口,對於另一套系統採用的方式是自己寫一套mock系統對調用進行返回模擬,暫時忽略不表

1.TestCase 類的結構

from django.test import TestCase


class Demo(TestCase):
    # 最先執行
    def setUp(self):
        print('setUp')

    # 最後執行
    def tearDown(self):
        print('tearDown')

    def test_demo(self):
        print('test_demo')

    def test_demo_2(self):
        print('test_demo2')

輸出:

setUp
test_demo
tearDown
.setUp
test_demo2
tearDown

測試過程中還會自動創建測試數據庫,測試完成後自動銷燬

2.利用TestCase測試接口

假設路由,視圖函數,models等等都已經寫好了

from django.test import TestCase
from django.urls import reverse
from account.models import User
from mixer.backend.django import mixer


class RuleViewApiTestCase(TestCase):
    def setUp(self):
        # mixer這個模塊,這個模塊會根據你定義的模型和模型的字段來隨機生成測試數據,包括這個數據的外鍵數據。 這樣在我們這種層級非常多的關係型數據就非常的方便,否則需要一層一層的去生成數據。
        self.user = mixer.blend(User)
        self.user.uuid = 'fsfasfsa'
        self.user.save()

    def test_user_query_api(self):
        # django.urls.reverse函數和在路由設置的name來得到請求的地址
        url = reverse('user_query')

        # 發送請求
        response = self.client.get(url)
        self.assertEqual(response.status_code, 403)
        data = {'login': 0}

        # 如果需要攜帶參數只需要傳入data參數
        response = self.client.get(url, data)

        # 檢查響應內容是否正確
        self.assertEqual(response.status_code, 200)
        res_data = response.json().get('results')
        print(res_data)
        print(type(res_data))
        self.assertEqual(len(res_data), 1)

    def tearDown(self):
        print()

more about testing in Django:https://docs.djangoproject.com/en/2.2/topics/testing/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章