How can I test query_params? I have provided a response and a request, but it still doesn't work. Initially, the error was like this:
price = int(self.context.get('request').query_params.get('price', None))
AttributeError: 'NoneType' object has no attribute 'query_params'
test_api.py
class IpotekaApiTestCase(APITestCase):
def setUp(self) -> None:
self.offer_1 = Ipoteka.objects.create(bank_name='test',
term_min=1,
term_max=3,
rate_min=1.5,
rate_max=4.8,
payment_min=12345,
payment_max=123456)
self.offer_2 = Ipoteka.objects.create(bank_name='test_1',
term_min=1,
term_max=3,
rate_min=1.5,
rate_max=4.8,
payment_min=12345,
payment_max=123456)
def test_get(self):
url = reverse('offer-list')
response = self.client.get(url)
view = IpotekaModelViewSet.as_view({'get': 'list'})
request = RequestFactory().get('/')
context = {'request': view(request), 'response': response}
serializer_data = IpotekaSerializer([self.offer_1, self.offer_2],
context=context, many=True).data
self.assertEqual(status.HTTP_200_OK, response.status_code)
self.assertEqual(serializer_data, response.data['results'])
serializers.py
def get_payment(self, obj) -> int:
try:
price = int(self.context.get('request').query_params.get('price', None))
deposit = int(self.context.get('request').query_params.get('deposit',
None))
term = int(self.context.get('request').query_params.get('term', None))
if price == 0 or term == 0:
return 0
return self._get_offer_result(price, deposit, term, obj)
except (ValueError, TypeError):
return 0
Got this error:
File "D:\Work\Django\Test_ipoteka\ipoteka\serializers.py", line 22, in get_payment
price = int(self.context.get('request').query_params.get('price', None))
AttributeError: 'Response' object has no attribute 'query_params'
----------------------------------------------------------------------
Ran 1 test in 0.014s
FAILED (errors=1)
I also deleted response but it didn't help.