# encoding=utf-8import factoryfromfactory import fuzzyfromNumProvider import NumProviderclassUser:
def __init__(self, name, num, age, school, city, phone):
self.name, self.num, self.age, self.school, self.city, self.phone=name, num, age, school, city, phoneclassSchool:
def __init__(self, schoolName):
self.schoolName=schoolName
factory.Faker.add_provider(NumProvider) # 添加自定义的NumProviderclassSchoolFactory(factory.Factory):classMeta:
model=School
# schoolName= factory.sequence(lambda n: ‘school%04d‘ %n) # factory.sequence
# schoolName=factory.Faker._get_faker().random_int() #调用生成好的provider
schoolName= factory.Faker(‘num‘).generate() #调用生成好的providerclassUserFactory(factory.Factory):classMeta:
model=User
name= factory.Faker("name", locale="zh_CN") # factory.Faker
num= factory.Faker("num") #调用生成好的provider
age= factory.fuzzy.FuzzyInteger(42) # factory.fuzzy.FuzzyInteger
city= factory.Faker("address", locale="zh_CN")
phone= factory.fuzzy.FuzzyText("138", 7, "1", "1234567890") # factory.fuzzy.FuzzyText
school=factory.SubFactory(SchoolFactory) # factory.SubFactoryclassParams:
shipped=factory.Trait(
name=None
)if __name__ == "__main__":
# 单个生成
# seq=[]
# seq2=[]
# uf=UserFactory()
# # print(uf.__dict__)
# seq.append(uf.__dict__)
# seq2.append(UserFactory().__dict__)
# print(seq)
# print(seq2)
# ##批量生成
# list=[]
# fss= factory.build_batch(UserFactory, 4)
#for fs infss:
# list.append(fs.__dict__)
# print(list)
##部分字段修改
# uff= UserFactory(shipped=True)
uff= UserFactory(shipped=False)
print(uff.school.__dict__)
print(uff.__dict__)
print(uff.__dir__())