Измените домен по умолчанию Client () в unittest of Django - PullRequest
16 голосов
/ 09 июня 2011

Я пишу модульный тест для представлений Django.

class TestLog(unittest.TestCase):
    """Test for Contact"""
    def setUp(self):
        self.c = Client()
        try:
            self.bob = User.objects.create_user("mojo","b@example.com", "bmojo")
        except :
            print ''

    def test_get_emails(self):
        response = self.c.get('/text/')
        self.assertEqual(response.status_code, 200)


    def test_htmlemils(self):
        response = self.c.get('/emails/html/upload')
        self.assertEqual(response.status_code, 200)

c = Client () принимает 'http://testserver' в качестве домена, который я хочу перезаписать, я хочу добавить свой реальный домен в этот тестовый клиент, есть ли способ настроить тестовый клиент?

Ответы [ 2 ]

26 голосов
/ 09 июня 2011

Django's Client расширяет RequestFactory, поэтому вы должны иметь возможность передавать дополнительные параметры в качестве аргументов ключевых слов.

Попробуйте:

response = self.c.get('/emails/html/upload', SERVER_NAME="mydomain.com")
0 голосов
/ 21 ноября 2018

Код может помочь не только в модульном тестировании, но также может помочь DRF использовать контекст в сериализаторе. ResponseSerializer(instance=obj, context={'request': get_request}).data

from django.test.client import RequestFactory
rf = RequestFactory()
rf.defaults['SERVER_NAME'] = 'my-site.com'
get_request = rf.get('/hello/')
...