如何模拟功能切换而无需连接到“暗黑启动”?

时间:2019-06-03 05:45:25

标签: python unit-testing launchdarkly

我有一个新的代码行,必须用功能切换键将其包围。由于它是一项服务(Flask应用程序),可在启动时启动其所有连接以及与外部源的相关集成-执行单元测试时,我没有运行LaunchDarkly的实例。

是否有一种简单的方法来模拟和预定义Python中的单元测试/集成测试的功能切换?我正在用pytest编写单元测试。

我的代码示例:

if FeatureToggle.is_enabled("my-feature-toggle-name"):
     *my code logic*

is_enabled()方法隐含:

@staticmethod
def is_enabled(flag_name: str, user_key: str=None, custom_params: dict=None) -> bool:
    if user_key is None:
        user_key = 'defaut_user_key'

    return FeatureToggle.ld_client.variation(flag_name, {"key": user_key, "custom": custom_params}, False)

运行应用程序时,FeatureToggle.ld_client是使用适当的api键启动的,以使其黑暗启动,然后允许我使用其variation()方法。
我知道可以在没有is_enabled()实例的情况下将ld_client方法更改为返回预定义值,但是我正在寻找更优雅的方法。

谢谢!

2 个答案:

答案 0 :(得分:0)

因此,在调查和建议同事之后,可以使用unittest.mock库来完成此操作。

当我有完整的解决方案时,我将更新答案

答案 1 :(得分:0)

我还要补充一点,除了使用模拟库之外,您还可以实例化客户端以从文件中读取[1],而不用连接到LaunchDarkly API。这样,您可以拥有一组预定的测试值,可用于测试目的。

[1] https://launchdarkly-python-sdk.readthedocs.io/en/latest/api-integrations.html?highlight=test#ldclient.integrations.Files