2015-12-17 21 views
1

所以我有這樣的對象:應用功能,騙子

class ContactPhoneFactory(factory.Factory): 
    class Meta: 
     model = ContactPhoneNumber 

    number = Faker().phone_number() 
    type = factory.Faker('random_element', elements=range(5)) 

我想給一個函數「FORMATTED_NUMBER」適用於「數字」

,如果我申請:

number = formatted_number(Faker().phone_number()) 

它不會將函數應用於Faker的輸出,它只會將Faker對象作爲輸入。懶惰屬性導致相同的問題。如何將格式化函數應用於faker對象?

回答

1

我自己也碰到了一個非常類似的問題(也在PhoneNumber工廠):我只是想限制faker生成的數字只能用於移動號碼。

我剛剛實施了我自己的faker提供商。這還有一個好處,就是不會受制於工廠男孩API的變化(faker對於工廠男孩來說還很新穎)。

我覺得是這樣的:

from faker.providers.phone_number import Provider as PhoneProvider 

class MyPhoneProvider(PhoneProvider): 
    @classmethod 
    def formatted_phone_number(cls): 
     return formatted_number(cls.phone_number()) 

factory.Faker.add_provider(MyPhoneProvider) 

number = factory.Faker('formatted_phone_number')