2012-07-05 109 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