福利:测试应用¶
现在你应该完成你的应用,并且一切都按预期运转正常,对于简化未来的修改,添加自动测试不是一个坏主意。上面的应用将作为文档中测试Flask应用一节的例子来演示如何进行单元测试。去看看测试Flask应用是多么简单的一件事。
添加测试到flaskr中¶
假设你已经看过测试Flask应用部分,并且已经编写你自己的flaskr
测试或者已经跟踪提供的示例,你可能想知道如何组织项目。
一种可行并推荐的项目结构是︰
flaskr/
flaskr/
__init__.py
static/
templates/
tests/
test_flaskr.py
setup.py
MANIFEST.in
现在,继续创建tests/
目录以及test_flaskr.py
文件。
运行测试¶
到这里,你可以运行测试了。这里将使用pytest
。
注
请确保pytest
与flaskr安装在相同的virtualenv中。否则pytest
测试将不能导入所需的组件来测试应用︰
pip install -e .
pip install pytest
在flaskr /
的顶级目录,运行并观察测试通过︰
py.test
测试 + setuptools ¶
处理测试一种方法是将其与setuptools
集成。这里需要添加几行到setup.py
文件并创建一个新的文件setup.cfg
。这种运行测试的方法的一个好处是,你不需要安装pytest
。往前并更新setup.py
文件以包含︰
from setuptools import setup
setup(
name='flaskr',
packages=['flaskr'],
include_package_data=True,
install_requires=[
'flask',
],
setup_requires=[
'pytest-runner',
],
tests_require=[
'pytest',
],
)
现在在项目根目录(与setup.py
平级)中创建setup.cfg
:
[aliases]
test=pytest
现在你可以运行︰
python setup.py test
当调用 setup.py 脚本时,将会通过 pytest-runner 调用运行 setup.cfg 中创建的别名 pytest 。(回想
setup.py
中的setup_requires参数)遵循测试发现的标准规则,您的测试将被发现,运行,并且希望通过。
这是运行和管理测试的一种方式。这里用的是pytest
,但是还有其它选择例如nose
。与setuptools
集成很方便,因为这样就不需要真正下载pytest
或者其它可能用到的测试框架。