Kur*_*eek 6 python unit-testing flask
我从Github 克隆了烧瓶应用程序,并尝试按照Testing Flask Applications教程进行操作.以下奖励:测试应用程序,我已经test在顶级flaskr目录中添加了一个子目录,因此我的目录树如下所示:
.
??? build
? ??? bdist.linux-x86_64
? ??? lib.linux-x86_64-2.7
? ??? flaskr
? ??? flaskr.py
? ??? __init__.py
? ??? schema.sql
? ??? static
? ? ??? style.css
? ??? templates
? ??? layout.html
? ??? login.html
? ??? show_entries.html
??? dist
? ??? flaskr-0.0.0-py2.7.egg
??? flaskr
? ??? flaskr.db
? ??? flaskr.py
? ??? flaskr.pyc
? ??? __init__.py
? ??? __init__.pyc
? ??? schema.sql
? ??? static
? ? ??? style.css
? ??? templates
? ??? layout.html
? ??? login.html
? ??? show_entries.html
??? flaskr.egg-info
? ??? dependency_links.txt
? ??? PKG-INFO
? ??? requires.txt
? ??? SOURCES.txt
? ??? top_level.txt
??? MANIFEST.in
??? README
??? setup.cfg
??? setup.py
??? test
? ??? test_flaskr.py
??? tests
??? test_flaskr.py
Run Code Online (Sandbox Code Playgroud)
请注意,目录中还有"内置"测试tests; 但是,我正在test_flaskr.py目录中编写测试tests.到目前为止,我只尝试了一个测试:
import os
import flaskr
import unittest
import tempfile
class FlaskrTestCase(unittest.TestCase):
def setUp(self):
self.db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp()
flaskr.app.config['TESTING'] = True
self.app = flaskr.app.test_client()
with flaskr.app.app_context():
flaskr.init_db()
def tearDown(self):
os.close(self.db_fd)
os.unlink(flaskr.app.config['DATABASE'])
def test_empty_db(self):
rv = self.app.get('/')
assert b'No entries here so far' in rv.data
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试运行此操作,则会出现以下错误:
Traceback (most recent call last):
File "/home/kurt/dev/scratch/flask/examples/flaskr/test/test_flaskr.py", line 13, in setUp
flaskr.init_db()
AttributeError: 'module' object has no attribute 'init_db'
Run Code Online (Sandbox Code Playgroud)
我不明白这个错误.我和https://github.com/pallets/flask/blob/master/examples/flaskr/flaskr/flaskr.pyflaskr.py上的相同,并且定义了一个函数.如何进行单元测试?init_db
met*_*irr 15
flaskr在脚本中导入包时,可以访问声明和定义的变量,函数等flaskr/__init__.py
init_db未定义flask/__init__.py,提供的代码,期望init_db在中定义flask/__init__.py.
有两种方法可以解决您遇到的问题:
替换flaskr.init_db()为flaskr.flaskr.init_db()
修改import语句test_flaskr.py如下:
更改import flaskr到from flaskr import flaskr
| 归档时间: |
|
| 查看次数: |
1255 次 |
| 最近记录: |