我有一个新的代码行,它必须被一个功能按钮包围。因为它是一个服务(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方法以返回预定义的值,但我正在寻找更优雅的方法。
谢谢!
发布于 2019-06-05 11:12:17
因此,在对我的同事进行调查并向他们提供建议之后,可以使用unittest.mock库来完成这一工作。
当我有完整的解决方案时,我会更新答案。
发布于 2019-08-12 02:42:07
我还要补充的是,除了使用模拟库之外,还可以实例化客户机从file1读取,而不是连接到LaunchDarkly API。通过这种方式,您可以有一组预先确定的测试值,可以用于测试目的。
https://stackoverflow.com/questions/56421730
复制相似问题