福利:测试应用

现在你应该完成你的应用,并且一切都按预期运转正常,对于简化未来的修改,添加自动测试不是一个坏主意。上面的应用将作为文档中测试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,但是还有其它选择例如nosesetuptools集成很方便,因为这样就不需要真正下载pytest或者其它可能用到的测试框架。