私は次のような機能を持っています
def getEvents(eid, request):
......
次に、上記の関数の単体テストを(ビューを呼び出さずに)書きたいと思います。したがって、TestCase
で上記をどのように呼び出す必要があります。リクエストを作成することは可能ですか?
このソリューション を参照してください:
from Django.utils import unittest
from Django.test.client import RequestFactory
class SimpleTest(unittest.TestCase):
def setUp(self):
# Every test needs access to the request factory.
self.factory = RequestFactory()
def test_details(self):
# Create an instance of a GET request.
request = self.factory.get('/customer/details')
# Test my_view() as if it were deployed at /customer/details
response = my_view(request)
self.assertEqual(response.status_code, 200)
Django=テストクライアント(from Django.test.client import Client
)]を使用している場合、次のように応答オブジェクトからリクエストにアクセスできます。
from Django.test.client import Client
client = Client()
response = client.get(some_url)
request = response.wsgi_request
またはDjango.TestCase
(from Django.test import TestCase, SimpleTestCase, TransactionTestCase
)を使用している場合は、self.client
と入力するだけで、任意のテストケースでクライアントインスタンスにアクセスできます。
response = self.client.get(some_url)
request = response.wsgi_request
RequestFactory
を使用して、ダミーのリクエストを作成します。
Djangoテストクライアントを使用できます
from Django.test import Client
c = Client()
response = c.post('/login/', {'username': 'john', 'password': 'smith'})
response.status_code
response = c.get('/customer/details/')
response.content
詳細については
https://docs.djangoproject.com/en/1.11/topics/testing/tools/#overview-and-a-quick-example
def getEvents(request, eid)
という意味ですか?
Django unittestでは、from Django.test.client import Client
リクエストを作成します。
こちらをご覧ください: テストクライアント
@Secatorの答えは、非常に優れた単体テストのために本当に好まれるモックオブジェクトを作成するためです。ただし、目的によっては、Djangoのテストツールを使用する方が簡単な場合があります。