单元测试 + 模拟 + UWSGI
Unittest + Mock + UWSGI
我有一个 python wsgi 应用程序配置为 运行 uwsgi 安装在应用程序的虚拟环境中。该应用程序的主要功能是从数据库中检索文件。我需要在 运行 使用 uwsgi 连接应用程序时测试此功能。同时我需要模拟连接到数据库的函数的输出。当 运行ning uwsgi 时,这被证明是一件很难(不可能?)的事情。
主应用程序名为 app.py。在同一个目录中有一个带有测试的测试模块(init.py 的目录)。我尝试用补丁(形式 unittest.mock)修补函数的输出,然后在测试用例中用 selenium 打开网页,而 uwsgi 一直在 运行ning。但是 uwsgi 的输出似乎不受补丁的影响,uwsgi 只是使用 app.py.
中的真实函数
我可以做些什么来实现所需的行为?我需要测试应用程序如何与uwsgi一起工作,同时不能使用任何数据库。
您似乎混淆了不同级别的测试。 Mocking/patching 适用于单元测试,您可以在其中单独测试一个函数。您所描述的是集成测试;在这里,您应该使用测试数据库将您的应用设置为 运行,而不是打补丁。
我有一个 python wsgi 应用程序配置为 运行 uwsgi 安装在应用程序的虚拟环境中。该应用程序的主要功能是从数据库中检索文件。我需要在 运行 使用 uwsgi 连接应用程序时测试此功能。同时我需要模拟连接到数据库的函数的输出。当 运行ning uwsgi 时,这被证明是一件很难(不可能?)的事情。
主应用程序名为 app.py。在同一个目录中有一个带有测试的测试模块(init.py 的目录)。我尝试用补丁(形式 unittest.mock)修补函数的输出,然后在测试用例中用 selenium 打开网页,而 uwsgi 一直在 运行ning。但是 uwsgi 的输出似乎不受补丁的影响,uwsgi 只是使用 app.py.
中的真实函数我可以做些什么来实现所需的行为?我需要测试应用程序如何与uwsgi一起工作,同时不能使用任何数据库。
您似乎混淆了不同级别的测试。 Mocking/patching 适用于单元测试,您可以在其中单独测试一个函数。您所描述的是集成测试;在这里,您应该使用测试数据库将您的应用设置为 运行,而不是打补丁。