2016-04-04 24 views
0

這是我的代碼:爲什麼請求不通過單元測試發佈,而通過簡單的API調用進行工作?

#!flask/bin/python 
from myProject import app 
import unittest 


class TestCase(unittest.TestCase): 
    def setUp(self): 
     pass 

    def tearDown(self): 
     pass 

    def test_login(self): 
     response = app.test_client().post('/login', data={}) 
     self.assertEqual(response.status_code, 200) 

if __name__ == '__main__': 
    unittest.main() 

當我運行該腳本,我得到以下錯誤:

====================================================================== 
FAIL: test_login (__main__.TestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "test_login.py", line 16, in test_login 
    self.assertEqual(response.status_code, 200) 
AssertionError: 404 != 200 

---------------------------------------------------------------------- 
Ran 1 test in 0.096s 

FAILED (failures=1) 

EDIT1:

app.py文件我有:

from flask_restful import Api 
app = Flask(__name__) 
api = Api(app) 

class myProjectApp(object): 
    def setup(self): 
     api.add_resource(Login, '/login') 

我有404.但簡單的API調用/login按預期工作。無論如何,我的應用程序在端口5000上。有什麼我在這裏失蹤?


EDIT2:

這似乎與單元測試是測試瓶寧靜的API是不同的,與工作內置route裝飾完美的作品和單元測試工作。我應該如何測試燒瓶平靜的API?

+0

我不能給出的信息重現您的問題。請[edit]包含[mcve]。 – davidism

回答

0

因爲我使用的是Api(app)這是一個用於安靜Web服務的外部庫,所以路由無法訪問。我在unittest方法中調用setup函數來初始化Api路由。現在,它按預期工作:

myApp = myProjectApp() 
self.app = myApp.setup() 

設置方法包括:

def setup(self): 
     api.add_resource(Login, '/login') 
     . 
     . 
     . 
相關問題