-
Notifications
You must be signed in to change notification settings - Fork 397
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Allow functions as models #1072
base: master
Are you sure you want to change the base?
Allow functions as models #1072
Conversation
Hello, Thanks for the feedback! That's indeed likely to be a bug. Would it be possible to have a minimal example of code where this breaks, to add to our test suite? NB: This is one of the reasons why I prefer to see an issue first, before jumping in the code — our issue templates make it easier for us to gather all details we need to move forward ;) |
Hey, sorry for the late reply. You mean something like this? import factory
class Item:
def __init__(self, sku, price):
self.sku = sku
self.price = price
def item_factory(sku, price):
obj = model.Item(sku, price)
return obj
class ItemFactory(factory.Factory):
class Meta:
model = item_factory
sku = "foo"
price = "bar"
class SpecialItemFactory(ItemFactory):
sku = "special"
item = SpecialItemFactory() # TypeError: issubclass() arg 1 must be a class Should I add a test case to the test suite? BR |
Yes please! That's exactly what I had in mind ;) |
6a0825f
to
4712853
Compare
Done @rbarrois |
@rbarrois Could you please merge this when you have a chance? Thank you. |
Facilitates the use of a factory function, that may create several related objects at once.
4712853
to
01a864c
Compare
Hi @rbarrois, let me know if there's anything left to do for me in order to get this merged 🙏 |
Hi,
in our project, we're using factories for our models:
Now, in our tests we want factory boy to call those factories instead of the model classes directly, which works perfectly except in this case:
When a factory inherits from another factory,
FactoryOptions._get_counter_reference
expects the assigned model to be a class, becauseissubclass
raises:We couldn't find a fix for this case so I've opened this PR. If my solution is wrong or if anything is missing in my commit, please don't hesitate to let me know.
BR