0
url(r'^(?P<id>[0-9]+)/$', login_required(views.detail), name = 'detail')
그리고 대상 URL을 쿼리 할 때 어떤보기가 선택되어 있는지 확인하는 테스트를 작성하려고합니다. 나는 시험 시작 전에 로그인 클래스를했습니다 :
class LoggedInTestCase(TestCase):
def setUp(self):
user = User.objects.create_user('test', '[email protected]', 'test')
self.client.login(username='test', password='test')
class ProductDetailTest(LoggedInTestCase):
def setUp(self):
super(ProductDetailTest, self).setUp()
def test_product_detail_url_resolves_product_detail_view(self):
view = resolve('/products/1/')
self.assertEquals(view.func, detail)
와 내가 테스트를 실행할 때 내가 가지고 :
FAIL: test_product_detail_url_resolves_product_detail_view (products.tests.ProductDetailTest)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\heroku\django\products\tests.py", line 46, in test_product_detail_url_resolves_product_detail_view
self.assertEquals(view.func, detail)
AssertionError: <function detail at 0x05CC3780> != <function detail at 0x053B38A0>
----------------------------------------------------------------------
이
print('VIEW: ', view.view_name)
를 해결하는보기 확인 결과 is :
test_product_detail_url_resolves_product_detail_view (products.tests.ProductDetailTest) ... VIEW: products:detail
login_required 모든 테스트가 잘 통과합니다.
감사합니다, 나는이 문제를 의심 하지만 장식 된 것을 확인하는 특별한 어설 션 기능이 있다면 의심 스럽다. @login_required 함수에 주석을 달아도 문제가 없습니다. – Dmitrii
아니요, 데코 레이팅 된 기능을 언 래핑하는 어설 션이 없습니다. 파이썬 3에서 (데코 레이팅 된 함수를 푸는 것은) 가능할 것 같습니다 (https://www.safaribooksonline.com/library/view/python-cookbook-3rd/9781449357337/ch09s03.html).하지만 뷰를 바꾸면/위에서 제안한 테스트는 더 간단합니다. – Alasdair