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