Джанго-тестирование на основе классов - PullRequest
0 голосов
/ 18 мая 2018

У меня есть представление на основе классов, определенное как:

class Myview(LoginRequiredMixin, View):

    def post():
      #.......

, чтобы проверить это представление, я пробовал это

class MyViewTest(TestCase):
    def setUp(self):
        self.factory = RequestFactory()
        self.user = User.objects.create_user(
            username='jacob', email='soos@i.com', password='vvggtt')

    def view_test(self):
        # Create an instance of a POST request.
        request = self.factory.post('/my-url/')
        request.user = self.user

        response = MyView(request)
        print (response,"**")
        self.assertEqual(response.status_code, 200)

Но это выдает эту ошибку.

    response = MyView(request)
TypeError: __init__() takes 1 positional argument but 2 were given

Я понимаю, почему появляется эта ошибка (у cinstructor в MyView 2 ars), но как мне ее устранить?я не могу получить подробную информацию о поиске.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

мы можем использовать тест Джанго client

from django.test import Client

class MyViewTest(TestCase):
    def setUp(self):
        self.client = Client()
        self.user = User.objects.create_user(
            username='jacob', email='soos@i.com', password='vvggtt')

    def view_test(self):
        # Create an instance of a POST request.
        self.client.login(username="jacob", password="vvggtt")
        data = {'name': 'test name'}
        res = self.client.post('/my-url/', data)
        print(res)
        self.assertEqual(res.status_code, 200)
0 голосов
/ 18 мая 2018

Попробуйте

response = MyView(request=request)
...