我已經很長時間的讀者,但這是我第一次發佈。燒瓶應用單元 - 測試斷言錯誤
好的,所以我想單元測試Flask中的演示應用程序,我不知道我做錯了什麼。
這些都是我的「路線」在一個名爲manager.py文件:
@app.route('/')
@app.route('/index')
def hello():
return render_template('base.html')
@app.route('/hello/<username>')
def hello_username(username):
return "Hello %s" % username
第一條路線是加載base.html文件模板呈現一個「喜」的消息,這是在工作單位 - 測試但第二條路線得到斷言錯誤。
,這是我的測試文件manage_test.py:
class ManagerTestCase(unittest.TestCase):
def setUp(self):
self.app = app.test_client()
def t_username(self, username):
return self.app.post('/hello/<username>', follow_redirects=True)
def test_username(self):
rv = self.t_username('alberto')
assert "Hello alberto" in rv.data
def test_empty_db(self):
rv = self.app.get('/')
assert 'hi' in rv.data
這是從單元測試運行的輸出:
.F
======================================================================
FAIL: test_username (tests.manage_tests.ManagerTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/albertogg/Dropbox/code/Python/flask-bootstrap/tests/manage_tests.py", line 15, in test_username
assert "Hello alberto" in rv.data
AssertionError
----------------------------------------------------------------------
Ran 2 tests in 0.015s
FAILED (failures=1)
我想知道,如果你們能幫助我!我做錯了什麼或失蹤?
編輯
我這樣做,它的工作
class ManagerTestCase(unittest.TestCase):
def setUp(self):
self.app = app.test_client()
def t_username(self, username):
return self.app.get('/hello/%s' % (username), follow_redirects=True')
# either that or the Advanced string formatting from the answer are working.
def test_username(self):
rv = self.t_username('alberto')
assert "Hello alberto" in rv.data
def test_empty_db(self):
rv = self.app.get('/')
assert 'hi' in rv.data
首先,你需要allo在POST上/你好。另一方面,'hello_username'的'username'參數不會自動將POST數據轉換爲方法參數。 – sberry
另一方面,'t_username'不會使用'username'參數設置帖子的數據。 – yiding