使用Flask LiveServerTestCase时的存根方法

时间:2017-03-31 11:21:33

标签: python flask mocking phantomjs splinter

我们正在尝试测试向第三方发送请求的前端功能 单击按钮时的API。单击将触发内部API调用 我们的Flask应用程序,它会将此转换为请求 ThirdPartyApi。

我们尝试使用Splinter,Flask Testing和PhantomJS进行测试。因为我们 不想要实际的API,我们想要删除那个方法 执行此请求。但是,存根似乎不起作用和实际 执行http调用。我们怀疑它与差异有关 测试上下文和应用程序上下文之间,但我们无法解决它 使用Flask提供的app_context()

有人知道如何解决这个问题吗?以下是测试的简化版本 我们正在使用的代码。

from splinter import Browser
from flask_testing import LiveServerTestCase
from unittest.mock import patch


class ClickButtonTest(LiveServerTestCase):
    def test_click_button(self):
        browser = Browser('phantomjs')

        browser.visit(self.get_server_url() + "/")

        with self.app.app_context():
            @patch("app.lib.ThirdPartyApi")
            class FakeThirdPartyApi:
                def some_action(self, param):
                    return True

            browser.find_by_text("Click me!").click()

            assert browser.is_text_present("The button is clicked :)")

0 个答案:

没有答案