Hi all,
I have written test case for ProductDetails_ls for views
*views.py*
```
class onClickSearch():
def ProductDetails_ls(request, id):
# product_ls = vk_ls_product_search.objects.get(id=id)
product_ls = get_object_or_404(vk_ls_product_search, id=id)
email = request.session.get('email')
return render(request, "productdetails_ls.html", {
'product_ls': product_ls,'msg_count': msg_count_cl(email),
'time':
settings.SESSION_IDLE_TIMEOUT,
'name':
first_last_initial(email),
'fullname':
fullname(email),
})
```
*urls.py*
*```*
path('ProductDetails_ls/<int:id>', views.onClickSearch.ProductDetails_ls,
name='ProductDetails_ls'),
*```*
*test_views.py*
*```*
@pytest.mark.django_db
class TestViews:
def test_product_detail_ls_authenticated(self):
mixer.blend('pages.vk_ls_product_search')
path = reverse('ProductDetails_ls', kwargs={'id': 19})
request = RequestFactory().get(path)
request.user = mixer.blend(vk_customer)
response = onClickSearch.ProductDetails_ls(request, id=19)
print(response)
assert response.status_code == 200
*```*
*Here, I am getting this error please anyone can help me out to solve this
error,*
*```*
=============================================================================
FAILURES
=============================================================================
__________________________________________________________
TestViews.test_product_detail_ls_authenticated
__________________________________________________________
klass = <class 'pages.models.vk_ls_product_search'>, args = (), kwargs =
{'id': 19}, queryset = <QuerySet [<vk_ls_product_search:
HmuKHxkrbmhWDylFcBOd>]>
def get_object_or_404(klass, *args, **kwargs):
"""
Use get() to return an object, or raise a Http404 exception if the
object
does not exist.
klass may be a Model, Manager, or QuerySet object. All other passed
arguments and keyword arguments are used in the get() query.
Like with QuerySet.get(), MultipleObjectsReturned is raised if more
than
one object is found.
"""
queryset = _get_queryset(klass)
if not hasattr(queryset, 'get'):
klass__name = klass.__name__ if isinstance(klass, type) else
klass.__class__.__name__
raise ValueError(
"First argument to get_object_or_404() must be a Model,
Manager, "
"or QuerySet, not '%s'." % klass__name
)
try:
> return queryset.get(*args, **kwargs)
c:\users\user\appdata\local\programs\python\python38\lib\site-packages\django\shortcuts.py:76:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _
self = <QuerySet [<vk_ls_product_search: HmuKHxkrbmhWDylFcBOd>]>, args =
(), kwargs = {'id': 19}, clone = <QuerySet []>, limit = 21, num = 0
def get(self, *args, **kwargs):
"""
Perform the query and return a single object matching the given
keyword arguments.
"""
clone = self._chain() if self.query.combinator else
self.filter(*args, **kwargs)
if self.query.can_filter() and not self.query.distinct_fields:
clone = clone.order_by()
limit = None
if not clone.query.select_for_update or
connections[clone.db].features.supports_select_for_update_with_limit:
limit = MAX_GET_RESULTS
clone.query.set_limits(high=limit)
num = len(clone)
if num == 1:
return clone._result_cache[0]
if not num:
> raise self.model.DoesNotExist(
"%s matching query does not exist." %
self.model._meta.object_name
)
E pages.models.vk_ls_product_search.DoesNotExist:
vk_ls_product_search matching query does not exist.
c:\users\user\appdata\local\programs\python\python38\lib\site-packages\django\db\models\query.py:415:
DoesNotExist
During handling of the above exception, another exception occurred:
self = <test_views.TestViews object at 0x0000002030703EE0>
def test_product_detail_ls_authenticated(self):
mixer.blend('pages.vk_ls_product_search')
path = reverse('ProductDetails_ls', kwargs={'id': 19})
request = RequestFactory().get(path)
request.user = mixer.blend(vk_customer)
> response = onClickSearch.ProductDetails_ls(request, id=19)
pages\tests\test_views.py:32:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _
pages\views.py:2795: in ProductDetails_ls
product_ls = get_object_or_404(vk_ls_product_search, id=id)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _
klass = <class 'pages.models.vk_ls_product_search'>, args = (), kwargs =
{'id': 19}, queryset = <QuerySet [<vk_ls_product_search:
HmuKHxkrbmhWDylFcBOd>]>
def get_object_or_404(klass, *args, **kwargs):
"""
Use get() to return an object, or raise a Http404 exception if the
object
does not exist.
klass may be a Model, Manager, or QuerySet object. All other passed
arguments and keyword arguments are used in the get() query.
Like with QuerySet.get(), MultipleObjectsReturned is raised if more
than
one object is found.
"""
queryset = _get_queryset(klass)
if not hasattr(queryset, 'get'):
klass__name = klass.__name__ if isinstance(klass, type) else
klass.__class__.__name__
raise ValueError(
"First argument to get_object_or_404() must be a Model,
Manager, "
"or QuerySet, not '%s'." % klass__name
)
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
> raise Http404('No %s matches the given query.' %
queryset.model._meta.object_name)
E django.http.response.Http404: No vk_ls_product_search matches
the given query.
c:\users\user\appdata\local\programs\python\python38\lib\site-packages\django\shortcuts.py:78:
Http404
*```*
*But I have that model in my models.py *
*models.py*
*```*
class vk_ls_product_search(models.Model):
# linkid = models.IntegerField(null="true")
merchantname = models.CharField(max_length=255, null="false")
product_name = models.CharField(max_length=255)
sku = models.CharField(max_length=300, null="false")
img_url = models.TextField(max_length=255, null="false")
description_short = models.TextField(max_length=255, null=True)
description_long = models.TextField(max_length=255, null=True)
price = models.DecimalField(max_digits=10, decimal_places=2,
null="false", default=0)
sale_price = models.DecimalField(max_digits=10, decimal_places=2,
null="false", default=0)
category_primary = models.CharField(max_length=255, null="false")
category_secondary = models.CharField(max_length=255, null="false")
createdon = models.DateTimeField(editable=False, null=True)
link_url = models.TextField(max_length=500, null=True)
upc_code = models.BigIntegerField(null=True)
rebate = models.BigIntegerField(null="false", default=0)
type_of_product = models.CharField(max_length=50, null=True,
default="lsps")
webservice_id = models.IntegerField(null=True)
""" Here, it saves time as your timezone """
def save(self, *args, **kwargs):
""" On save, update timestamps """
if not self.pk:
self.createdon = timezone.now()
return super(vk_ls_product_search, self).save(*args, **kwargs)
def __str__(self):
return self.product_name
class Meta:
verbose_name_plural = 'vk_ls_product_search'
*```*
*Please, Help me out to solve this error.*
*Thank you*
*~Salima*
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/CAMSz6bmKt%3DuhEwWD4EZZ9PFENH%2BT80H3Grjt5OTyFaSd670zsA%40mail.gmail.com.