From f0fadcf0505e05626fc560af9bc25a31efe828e7 Mon Sep 17 00:00:00 2001 From: Joshua Logan Date: Tue, 8 Oct 2019 15:53:39 +0200 Subject: [PATCH] Force generation to use strategy defined within the factories meta - Default in case non-set is CREATE_STRATEGY. So this conforms to the absolute hardcoded default from before. --- pytest_factoryboy/fixture.py | 2 +- pytest_factoryboy/plugin.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pytest_factoryboy/fixture.py b/pytest_factoryboy/fixture.py index 7b4bdb5..743cd90 100644 --- a/pytest_factoryboy/fixture.py +++ b/pytest_factoryboy/fixture.py @@ -210,7 +210,7 @@ class Factory(factory_class): if argname in request._fixturedef.argnames: kwargs[key] = evaluate(request, request.getfixturevalue(argname)) - strategy = factory.enums.CREATE_STRATEGY + strategy = Factory._meta.strategy builder = factory.builder.StepBuilder(Factory._meta, kwargs, strategy) step = factory.builder.BuildStep(builder=builder, sequence=Factory._meta.next_sequence()) diff --git a/pytest_factoryboy/plugin.py b/pytest_factoryboy/plugin.py index fb143cc..8200169 100644 --- a/pytest_factoryboy/plugin.py +++ b/pytest_factoryboy/plugin.py @@ -1,6 +1,7 @@ """pytest-factoryboy plugin.""" from collections import defaultdict +from factory import enums import pytest @@ -72,7 +73,8 @@ def after_postgeneration(self, request): results = self.results.pop(model) obj = request.getfixturevalue(model) factory = self.model_factories[model] - factory._after_postgeneration(obj, create=True, results=results) + create = factory._meta.strategy == enums.CREATE_STRATEGY + factory._after_postgeneration(obj, create=create, results=results) def evaluate(self, request): """Finalize, run deferred post-generation actions, etc."""