これは、HomeTestsのtests.pyファイルで1つのテストが失敗したことを示しています。製品の申し込みをしています。これがtests.pyファイルです。
from django.urls import reverse
from django.urls import resolve
from django.test import TestCase
from .views import home, product_topics
from .models import Product
class HomeTests(TestCase):
def test_home_view_status_code(self):
url = reverse('home')
response = self.client.get(url)
self.assertEquals(response.status_code, 200)
def test_home_url_resolves_home_view(self):
view = resolve('/')
self.assertEquals(view.func, home)
def test_home_view_contains_link_to_topics_page(self):
product_topics_url = reverse('product_topics', kwargs={'pk': self.product.pk})
self.assertContains(self.response, 'href="{0}"'.format(product_topics_url))
class ProductTopicsTests(TestCase):
def setUp(self):
Product.objects.create(name='Light Bulb', description='Conserver energy',price=25.99,qtyOnHand=25)
def test_product_topics_view_success_status_code(self):
url = reverse('product_topics', kwargs={'pk': 1})
response = self.client.get(url)
self.assertEquals(response.status_code, 200)
def test_product_topics_view_not_found_status_code(self):
url = reverse('product_topics', kwargs={'pk': 99})
response = self.client.get(url)
self.assertEquals(response.status_code, 404)
def test_product_topics_url_resolves_board_topics_view(self):
view = resolve('/products/1/')
self.assertEquals(view.func, product_topics)
AttributeErrorは、HomeTestsに属性Productがないことを示しています。
これが私のviews.pyです
from django.shortcuts import render,get_object_or_404
from django.http import HttpResponse
from .models import Product
# Create your views here.
def home(request):
products = Product.objects.all()
return render(request, 'home.html', {'products': products})
def product_topics(request, pk):
product = get_object_or_404(Product, pk=pk)
return render(request, 'topics.html', {'product': product})
urls.pyには、以下があります。
from django.conf.urls import url
from django.contrib import admin
from inventories import views
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^products/(?P<pk>\d+)/$', views.product_topics, name='product_topics'),
url(r'^admin/', admin.site.urls),
]
問題はこのテスト全体です。
def test_home_view_contains_link_to_topics_page(self):
product_topics_url = reverse('product_topics', kwargs={'pk': self.product.pk})
self.assertContains(self.response, 'href="{0}"'.format(product_topics_url))
そこにはありませんproduct
かresponse
内のオブジェクトself
呼び出している間、self.response
&self.product
。たぶん、あなたはこのようなことをしたいと思いましたか?:
from django.test import Client
class HomeTests(TestCase):
def setUp(self):
self.client = Client()
# the other tests
def test_home_view_contains_link_to_topics_page(self):
product = Product.objects.create(
name='name', description='descr', price=1.0, qtyOnHand=2
)
product_topics_url = reverse('product_topics', kwargs={'pk': product.pk})
response = self.client.get(url)
content = response.content.decode('utf-8')
self.assertContains(content, 'href="{0}"'.format(product_topics_url))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加