【问题标题】:Unittest + Mock + UWSGI单元测试 + 模拟 + UWSGI
【发布时间】:2017-09-01 10:00:49
【问题描述】:

我有一个 python wsgi 应用程序,它被配置为使用安装在应用程序虚拟环境中的 uwsgi 运行。该应用程序的主要功能是从数据库中检索文件。我需要在使用 uwsgi 运行应用程序时测试此功能。同时我需要模拟连接到数据库的函数的输出。在运行 uwsgi 时,这被证明是一件很难(不可能?)的事情。

主应用程序名为 app.py。在同一目录中有一个带有测试的测试模块(带有 init.py 的目录)。我尝试使用补丁(形式 unittest.mock)修补函数的输出,然后在 uwsgi 运行时在测试用例中使用 selenium 打开网页。但是 uwsgi 的输出似乎不受补丁的影响,uwsgi 只是使用了 app.py 中的真实函数。

我可以做些什么来实现所需的行为?我需要测试应用程序如何与 uwsgi 一起工作,同时不能使用任何数据库。

【问题讨论】:

    标签: python unit-testing selenium uwsgi


    【解决方案1】:

    这似乎是您混淆了不同级别的测试。模拟/修补适用于单元测试,您可以在其中单独测试功能。您所描述的是集成测试;在这里,您应该将应用设置为使用测试数据库运行,而不是打补丁。

    【讨论】:

    • 问题实际上是应用本身依赖于uwsgi缓存框架,因此使用它的功能无法进行单元测试。 “uWSGI 服务器会自动将 uwsgi 模块添加到您的 Python 应用程序中”。你不能导入它。也许我可以在测试期间用一些具有相同基本功能的类替换 uwsgi 对象。
    猜你喜欢
    • 2013-02-22
    • 2011-04-11
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-13
    • 2021-12-08
    相关资源
    最近更新 更多