2012-07-05 108 views
4

嘗試兩個#python和#pocoo後來到這裏。我正在編寫燒瓶應用程序的單元測試,並且想要測試重定向。官方燒瓶教程不具有有關的東西,所以我試圖用這樣的:http://packages.python.org/Flask-Testing/瓶測試模塊沒有這樣的測試方法錯誤

這裏是我到目前爲止測試教程應用程序的代碼(應用程序代碼是在這裏:https://github.com/mitsuhiko/flask/tree/master/examples/flaskr/

from flaskext.testing import TestCase 
import flaskr 
from flask import Flask 

class FlaskrTest(TestCase): 

    def create_app(self): 
     app = Flask(__name__) 
     app.config['TESTING'] = True 
     return app 

    def test_add_entry(self, title, text): 
     resp = app.post('/add', data=dict(title='blah', 
      text='Blooh'), follow_redirects=True) 
     self.assertRedirects(resp, '/') 

if __name__ == '__main__': 
    myTest = FlaskrTest() 
    myTest.test_add_entry() 

這裏就是我得到的錯誤:

Traceback (most recent call last): 
    File "flaskr_test.py", line 17, in <module> 
    myTest = FlaskrTest() 
    File "/usr/lib/python2.7/unittest/case.py", line 185, in __init__ 
    (self.__class__, methodName)) 
ValueError: no such test method in <class '__main__.FlaskrTest'>: runTest 

我感謝所有幫助。 :)

回答

2

運行測試的最簡單方法是使用unittest.main進行測試,因爲flask.ext.testing.TestCaseunittest.TestCase的子類。所有其他測試收集器,如nose支持unittest.TestCase類應該工作。

unittest.main一個簡單的例子是這樣的:

import unittest 

# Here your TestCases 

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

unittest會發現所有的測試用例和測試方法,但要注意的是,類和方法的名稱必須與test開始。

聲明:我是Flask-Testing的維護者。

+0

感謝您的回答。我最終使用unittest進行測試,就像您在這裏所建議的一樣。但是我遇到的問題是Flask-Testing模塊(它沒有提到unittest模塊),正如我上面所說的。正如我鏈接的API文檔中所述,我在create_app方法中創建了應用程序,並在'test_add_entry方法'中提供了測試,該方法以'test'開頭。創建該類的實例,然後運行該方法不會運行該測試。那是我遇到的問題。 :) – 2012-07-24 19:03:29

+0

我在答案中添加了更多關於Flask-Testing的特殊信息。 – Jarus 2012-07-25 09:32:49

+0

由於缺乏Flask-Testing文檔,我感到非常沮喪。教程將非常有用。我遇到了'runTest'錯誤,找不到解決方案。我目前使用普通unittest.main(),但喜歡使用Flask-Testing。 – 2012-12-03 15:37:44