jsm*_*mar 8 django django-testing factory-boy django-tests
如何定义依赖于其他字段使用的字段factory-boy?
例如,我想定义一个email取决于first name和last name的User.
我尝试使用post_generation装饰器.但是,我的系统需要在创建实例之前定义电子邮件.
jsm*_*mar 16
来自文档:
LazyAttribute是一个简单但非常强大的构建块,用于扩展Factory.
它需要一个调用方法作为参数(通常是一个lambda); 该方法应该接受作为唯一参数构建的对象,并返回一个值.
class UserFactory(factory.Factory):
class Meta:
model = User
username = 'john'
email = factory.LazyAttribute(lambda o: '%s@example.com' % o.username)
Run Code Online (Sandbox Code Playgroud)
或者lazy_attribute装饰器.
来自文档:
如果一个简单的lambda是不够的,你可以使用lazy_attribute()装饰器代替.
这装饰了一个应该采用单个参数的实例方法self; 方法的名称将用作要填充方法的返回值的属性的名称:
class UserFactory(factory.Factory)
class Meta:
model = User
name = u"Jean"
@factory.lazy_attribute
def email(self):
# Convert to plain ascii text
clean_name = (unicodedata.normalize('NFKD', self.name)
.encode('ascii', 'ignore')
.decode('utf8'))
return u'%s@example.com' % clean_name
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2126 次 |
| 最近记录: |