I want to find a way to properly test my code with Factory Boy.
There are a model, like this:
from django.db import models
class MyModel(models.Model):
param1 = <some field>
param1 = <some field>
param1 = <some field>
@property
def is_smth(self):
<some complicated code that returns boolean>
There is a factory for this model:
import factory
class MyModelFactory(factory.DjangoModelFactory):
param1 = <some value>
param2 = <some value>
param3 = <some value>
# And here i need to "rewrite" property of the model
# so that it would always return true
Can anyone help me with that? I didn't found mentions about this in factory boy's documentation, and various variants i've tried doesn't seem to work.
As Suganthi said, you can using mock.
But I offer another solution:
@classmethod
def _create(cls, model_class, *args, **kwargs):
with mock.patch('MyModel.is_smth',
new_callable=mock.PropertyMock) as m:
m.return_value = True
return super()._create(model_class, *args, **kwargs)
Just mock property during generation models. It works on factoryboy==2.5.2
Have you tried using mocks?
def test_is_smith(self):
mymodel = MyModel()
with mock.patch('MyModel.is_smith', new_callable=mock.PropertyMock) as mocked_model:
mocked_model.return_value = True
self.assertTrue(mymodel.is_smith)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With