मैंने Django के परीक्षण ढांचे का उपयोग करना शुरू कर दिया है, और जब तक मैंने प्रमाणित पृष्ठों का परीक्षण शुरू नहीं किया तब तक सब कुछ ठीक काम कर रहा था। ,लॉगिन()
class SimpleTest(TestCase):
def setUp(self):
user = User.objects.create_user('temporary', '[email protected]', 'temporary')
def test_secure_page(self):
c = Client()
print c.login(username='temporary', password='temporary')
response = c.get('/users/secure/', follow=True)
user = User.objects.get(username='temporary')
self.assertEqual(response.context['email'], '[email protected]')
मैं इस परीक्षण चलाने के बाद, यह विफल रहता है, और मुझे लगता है कि मुद्रण लॉगिन के रिटर्न मान() रिटर्न सच:
सरलता के लिए, मान लीजिए कि यह एक परीक्षण है चलो लेकिन respond.content लॉगिन पृष्ठ पर रीडायरेक्ट हो जाता है (यदि लॉगिन प्रमाणीकरण सजावटी लॉगिन पृष्ठ पर रीडायरेक्ट विफल रहता है)। मैं डेकोरेटर में एक को तोड़ने का कहना है कि प्रमाणीकरण करता है डाल दिया है:
def authenticate(user):
if user.is_authenticated():
return True
return False
और यह वास्तव में झूठी देता है। Test_secure_page() में लाइन 4 उपयोगकर्ता को ठीक से पुनर्प्राप्त करता है। अगर मैं लॉगइन करने के लिए आवेदन के माध्यम से (परीक्षण के बाहर) कोशिश,
@user_passes_test(authenticate, login_url='/users/login')
def secure(request):
user = request.user
return render_to_response('secure.html', {'email': user.email})
बेशक
, सब कुछ ठीक काम करता है:
यह दृश्य कार्य है।
और कृपया जिस दृश्य का आप परीक्षण कर रहे हैं उसका कोड पोस्ट करें। –
@ एसएलट मैं अपने लॉगिन पेज का परीक्षण नहीं कर रहा था (हालांकि मैंने कोशिश की है, लेकिन यह न तो काम नहीं कर रहा है), लेकिन सिस्टम के बाकी "सुरक्षित" हिस्से में। इसी कारण से, मैंने लॉगिन() का उपयोग करने की कोशिश की। – kevin
@ केविन। मुद्दा यह है कि लॉगिन करने के लिए पोस्ट एक कुकी बनाता है जिसे क्लाइंट द्वारा उपयोग किया जाता है। कोई कुकी नहीं, कोई सुरक्षित पहुंच नहीं है। AFAIK, 'लॉगिन() 'फ़ंक्शन कुकी नहीं बनाता है और इसे क्लाइंट पर वापस कर देता है। क्या आप Django दस्तावेज़ीकरण में उदाहरणों को पुन: पेश करने का प्रयास कर सकते हैं और देख सकते हैं कि वे आपके लिए काम करते हैं या नहीं? –