Skip to content

Implement a pytest plugin to help with testing #135

@matthewelwell

Description

@matthewelwell

As part of some work in the core Flagsmith repository, we found that there isn't currently a good, generic solution for mocking the flagsmith client to return a given value for a flag at a given time. The ideal implementation as I see it would be to build a fixture that can be used as a context manager, or a function that looks something like this:

def my_test_function(set_flags: FlagsmithSetFlagsFixture) -> None:
    with override_flagsmith(flags=[Flag(name="foo", enabled=True, value="foobar")]):
        # in here, any calls to Flags.is_feature_enabled,Flags.get_flag and Flags.get_feature_value 
        # for the feature "foo" will return the values provided as an argument to override_flagsmith
        ...

def my_other_test_function(set_flags: FlagsmithSetFlagsFixture) -> None:
    set_flags(flags=[Flag(name="foo", enabled=True, value="foobar")])
    
    # For the remainder of this test, any calls to Flags.is_feature_enabled,Flags.get_flag 
    # and Flags.get_feature_value for the feature "foo" will return the values provided as 
    # an argument to override_flagsmith

See PR here for more context / discussions

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions