Django アプリケーションに単体テストを導入したいと考えていました。最初にテストしたいことで失敗し始めましたが。私が間違っていることを教えてもらえますか?
テストしたいビュー
@user_passes_test(lambda u: u.has_module_perms('myModule'))
def myView(request):
...someCode...
user_passes_test ビットをテストしたかったのですが、より複雑なテストも行っているため、テストで適切なユーザーのみがビューにアクセスできるかどうかを知りたいと考えていました。うまくいかなかった部分に焦点を当てて、少し単純化しました。
from django.contrib.auth.models import User
from django.test import TestCase
from settings import DJANGO_ROOT
class PermissionsTestCase(TestCase):
fixtures = [DJANGO_ROOT + 'testdata.json']
def setUp(self):
self.user = User.objects.create(username='user', password='pass')
self.user.save()
def test_permissions_overview(self):
url = '/secret/'
#User not logged in (guest)
response = self.client.get(url)
self.assertRedirects(response, 'http://testserver/accounts/login/?next=/secret/')
#Logged in user that should not be able to see this page
response = self.client.get(url)
self.client.login(username='user', password='pass')
self.assertRedirects(response, 'http://testserver/accounts/login/?next=/secret/')
#Logged in user that has 'myModule' module permissions
self.user.user_permissions.add('myModule.view_myThing')
self.user.save()
self.assertTrue(self.user.has_module_perms('myModule')) #This one fails
self.client.login(username='user',password='pass')
response = self.client.get(url)
self.assertContains(response, "What to look for") #This one too
そして、最後のビットは失敗し続けます。許可が通りません。何か案は?