2014-10-30 7 views
12

मैं कुप्पी का उपयोग कर रहा रजिस्टर करना और प्रवेश:py.test कुप्पी रजिस्टर, AssertionError परीक्षण करने के लिए: Popped गलत अनुरोध संदर्भ

from flask.ext.security.views import register, login 

class Register(Resource): 
    def post(self): 
     return register() 

class Login(Resource): 
    def post(self): 
     return login() 

api.add_resource(Login, '/login') 
api.add_resource(Register, '/register') 

तो मैं py.test का उपयोग वर्ग परीक्षण करने के लिए:

class TestAPI: 
    def test_survey(self, app): 
     client = app.test_client() 
     data = {'email': '[email protected]', 'password': 'password'} 
     rv = client.post('/2014-10-17/register', 
          data=json.dumps(data)) 
     ... 

AssertionError: Popped wrong request context. (<RequestContext 'http://localhost/2014-10-17/register' [POST] of panel.app> instead of <RequestContext 'http://localhost/' [GET] of panel.app>) 

तुम जानते हो क्यों करें:

जब मैं परीक्षण भाग गया, त्रुटि के रूप में पालन हुआ? और जब लॉगिन परीक्षण, ऐसी कोई त्रुटि

उत्तर

4

था ऐसा लगता है आप कुछ इस तरह के साथ कॉल का परीक्षण रैप करने के लिए है:

with self.app.test_client() as client: 
    data = {'email': '[email protected]', 'password': 'password'} 
    rv = client.post('/2014-10-17/register', data=json.dumps(data)) 
    ... 
17

यह एक ज्ञात कुप्पी problem है। आपको इसके बजाय दो अपवाद प्राप्त होते हैं। बस अपनी टेस्ट कॉन्फ़िगरेशन में PRESERVE_CONTEXT_ON_EXCEPTION = False जोड़ें।

0

जब आपके टेस्टए में सिंटैक्स त्रुटि या अन्य अपवाद होते हैं, तो tearDown() विधि जो पॉप पॉप कार्य नहीं करता है, इसलिए testA का संदर्भ सही ढंग से पॉप नहीं किया गया था। फिर आपका अगला परीक्षण हम इसे कॉल करते हैं testB testA के संदर्भ को पॉप करेगा। तो, यही कारण है कि आपको त्रुटि AssertionError: Popped wrong request context. मिली है।

अपने परीक्षण कोड में त्रुटि की जांच करें, इसे ठीक करें। फिर AssertionError स्वचालित रूप से चला जाएगा।

संबंधित मुद्दे