2015-06-16 52 views
0

我正在Flask應用程序上執行測試,我期待用jsonify構建json響應。我使用ast庫來解碼響應。不過,我收到以下錯誤:Flask jsonify布爾響應在單元測試中無法解碼

Traceback (most recent call last): 
    File "test_index.py", line 177, in test_create_venue 
    data = ast.literal_eval(rv.data) 
    File "/Users/manuelgodoy/anaconda/lib/python2.7/ast.py", line 80, in literal_eval 
    return _convert(node_or_string) 
    File "/Users/manuelgodoy/anaconda/lib/python2.7/ast.py", line 63, in _convert 
    in zip(node.keys, node.values)) 
    File "/Users/manuelgodoy/anaconda/lib/python2.7/ast.py", line 62, in <genexpr> 
    return dict((_convert(k), _convert(v)) for k, v 
    File "/Users/manuelgodoy/anaconda/lib/python2.7/ast.py", line 79, in _convert 
    raise ValueError('malformed string') 
ValueError: malformed string 

我的測試功能如下:

def test_create_venue(self): 
    rv = self.app.get("/data_send") 
    data = ast.literal_eval(rv.data) 
    self.assertTrue(data["Sent"]) 

和應用程序的功能是:

@app.route('/data_send', methods = ['GET']) 
def data_send(): 
    usr = User.get_by_id(g.user.key.id()) 
    usr.get_last_order().set_as_posted() 
    rest = usr.restaurant 
    for c in rest.channel_set(): 
     try: 
      channel.send_message(c.cid, 'ping') 
     except: 
      return jsonify(Sent = False) 
    return jsonify(Sent = True) 

Jsonify正在發送以下響應:

'{\n "Sent": true\n}' 

ast不識別小寫字母true作爲布爾值。因此,它提出了一個ValueError

任何想法如何將jsonify的響應轉換爲維護布爾值的Dict,以便我可以執行布爾斷言?

回答