我有一个新的代码行,必须用功能切换键将其包围。由于它是一项服务(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
方法更改为返回预定义值,但是我正在寻找更优雅的方法。
谢谢!
答案 0 :(得分:0)
因此,在调查和建议同事之后,可以使用unittest.mock库来完成此操作。
当我有完整的解决方案时,我将更新答案
答案 1 :(得分:0)
我还要补充一点,除了使用模拟库之外,您还可以实例化客户端以从文件中读取[1],而不用连接到LaunchDarkly API。这样,您可以拥有一组预定的测试值,可用于测试目的。