Hi all,
@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
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'
-- 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", {
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),
})
'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
__________________________________________________________ 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 django-users+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAMSz6bmKt%3DuhEwWD4EZZ9PFENH%2BT80H3Grjt5OTyFaSd670zsA%40mail.gmail.com.
No comments:
Post a Comment