python
  • flask
  • python-unittest
  • werkzeug
  • 2016-12-25 125 views 1 likes 
    1

    我想設置一個令牌在我的頭請求單元測試蟒蛇燒瓶請求

    def setUp(self): 
        #app = Flask(__name__) 
        self.app = main.application.test_client() 
    
    def login(self): 
        payload = {"user": "*******", "password": "******"} 
        url ='/user/auth' 
        headers = {'Content-Type': 'application/json'} 
        response = self.app.post(url, data=json.dumps(payload), headers=headers) 
        result = json.loads(response.data) 
        token = str(result["data"]["Token"]) 
        headers={'Content-Type': 'application/json','Token':token} 
        return headers 
    
    
    def GetTool(self): 
        headers= self.login() 
        return self.app.get('/tool/all',headers=headers,follow_redirects=True) 
    

    但頭部沒有設置... 我知道,因爲我打印那個。 見下文

    @toolAPI.route('/tool/all/', methods=['GET']) 
    #@authService.authorized 
    def getAllTools(): 
        print '*request headers' 
        print request.headers 
        try: 
         ...... 
    

    這是我得到的日誌:

    8:27:07 [MainThread ] [INFO ] ######HTTP MODE###### 
    18:27:07 [MainThread ] [INFO ] *request headers 
    18:27:07 [MainThread ] [INFO ] Host: localhost 
    18:27:07 [MainThread ] [INFO ] Content-Length: 0 
    18:27:07 [MainThread ] [INFO ] Content-Type 
    

    任何建議有什麼問題?

    +0

    有沒有辦法提供[mcve]?我知道這是很難與網絡的東西,但你能做到這一點? (對於緊湊型問題,仍然爲+1)。也許在代碼中硬編碼站點響應,以便代碼可以離線運行?順便說一句'app'定義在哪裏? –

    +0

    爲什麼你認爲「頭文件沒有設置」,你正在觀察的是什麼,以及試圖讀取頭文件的測試代碼是什麼?從代碼看來,接收/工具/全部可能期望該令牌與一個名爲「令牌」的單獨的非標準HTTP頭有些不同的方式。 – Peteris

    +0

    @ Jean-FrançoisFabre我試圖提供詳細信息告訴我它是否有幫助 –

    回答

    0

    在您的測試文件中。

    class TestYourthing(unittest.TestCase): 
        def setUp(self): 
         self.client = main.app.test_client() 
         # get your token from somewhere 
         self.headers = {'Content-Type': 'application/json', 'Token': token} 
    
        def test_forbidden_get(self): 
         """GET is forbidden for this route.""" 
         rv = self.client.get('/somewhere', headers=self.headers) 
         self.assertEqual(rv.status_code, 404) 
    
        # if you need to update locally the headers for a test 
    
        def test_post_working(self): 
         """testing POST for blah""" 
         # Adding another header here 
         self.headers.update({'X-Blah': 'ping'}) 
         rv = self.client.post('/somewhere', headers=self.headers) 
         self.assertEqual(rv.status_code, 200) 
    
    相關問題