簡體   English   中英

如何使用 unittest 在 Django 中使用 request.is_ajax() 和 request.method=='POST' 測試函數?

[英]How can I test function with request.is_ajax() and request.method=='POST' in Django using unittest?

我有下一個功能

    def edit_resolution_text_view(self, request):
        if request.method == 'POST' and request.is_ajax():
            resolution = request.POST.get('resolution')
            donation_id = request.POST.get('donation')
            result = Donation.objects.filter(pk=donation_id).\
                update(resolution_note=resolution)
            if not result:
                return JsonResponse({'message': 'Error'})
            return JsonResponse({'resolution': resolution})
        return JsonResponse({'message': 'Error'})

如何使用unittest對其進行測試

此函數位於Django modelAdmin

我將實例定義為self.donation_admin = DonationAdmin(model=Donation, admin_site=AdminSite())並將函數調用為self.donation_admin.edit_resolution_text_view(...)

最簡單的方法是使用 unittest 中的Client並調用解析為您函數的端點。 is_ajax()方法只是檢查 HTTP_X_REQUESTED_WITH': 'XMLHttpRequest' 標頭是否在請求中。 因此,您可以將其添加到測試請求中。

class TestEditResulutionTextView(unittest.TestCase):

    def test_get(self):
        response = self.client.get('/url_to_my_view/', **{'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
        self.assertEqual(response.json(), {'message': 'Error'})

    def test_post(self):
        expected_resolution = # put here what you are expecting
        response = self.client.post('/url_to_my_view/', **{'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'})
        self.assertEqual(response.json(), {'resolution': expected_resolution})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM