factory_boy庫中的工具,用於在測試中生成模擬資料:
1. Sequence: 用於生成一個唯一的序列。每次呼叫時,它都會返回一個新的值。這對於生成唯一的欄位(如使用者名稱或電子郵件地址)非常有用。例如,factory.Sequence(lambda n: f'user{n}@example.com')將生成一個唯一的電子郵件地址。
2. FuzzyChoice: 用於從給定的迭代器(如列表或元組)中隨機選擇一個元素。例如,FuzzyChoice(['red', 'blue', 'green'])將隨機選擇一個顏色。
3. FuzzyInteger: 用於生成一個在給定範圍內的隨機整數。例如,FuzzyInteger(1, 100)將生成一個在1到100之間的隨機整數。
4. FuzzyText: 用於生成一個隨機字串。你可以指定長度和字符集。例如,FuzzyText(length=12)將生成一個長度為12的隨機字串。
5. SubFactory: 用於在一個工廠中建立另一個工廠的例項。這對於建立具有複雜關係的模型非常有用。例如,如果你有一個User模型和一個Profile模型,其中Profile模型有一個User的外來鍵,你可以使用SubFactory在ProfileFactory中建立一個User例項。
這是一個例子:
1 class UserFactory(factory.Factory): 2 class Meta: 3 model = User 4 5 username = factory.Sequence(lambda n: f'user{n}') 6 email = factory.Sequence(lambda n: f'user{n}@example.com') 7 8 class ProfileFactory(factory.Factory): 9 class Meta: 10 model = Profile 11 12 user = factory.SubFactory(UserFactory) 13 bio = factory.FuzzyText()
在這個例子中,每次你建立一個ProfileFactory例項時,它都會自動建立一個新的UserFactory例項並將其賦值給Profile的user欄位。