Plone ATExtensions记录字段-验证器和验证器测试

Plone ATExtensions记录字段-验证器和验证器测试,plone,Plone,我想我应该从验证器测试开始我的测试写作生涯。这个 我决定测试的第一个验证器是ATExtensions记录字段,定义如下: class CoordinateField(RecordField): """ Stores angle in deg, min, sec, bearing """ security = ClassSecurityInfo() _properties = RecordField._properties.copy() _properties.up

我想我应该从验证器测试开始我的测试写作生涯。这个 我决定测试的第一个验证器是ATExtensions记录字段,定义如下:

class CoordinateField(RecordField):
    """ Stores angle in deg, min, sec, bearing """
    security = ClassSecurityInfo()
    _properties = RecordField._properties.copy()
    _properties.update({
        'subfield_validators' : {'degrees':'coordinatevalidator',
                                 'minutes':'coordinatevalidator',
                                 'seconds':'coordinatevalidator',
                                 'bearing':'coordinatevalidator'},
    'type' : 'angle',
    'subfields' : ('degrees', 'minutes', 'seconds', 'bearing'),
(顺便提一下,关于使用子字段\验证器而不是单字段验证器的原因的附带问题。唯一的记录类型)实际上激发的字段验证是一个子字段验证程序。如果有人有一个如何为记录字段本身编写单个验证程序的示例,请分享这个秘密好吗?这不是一个真正的问题,但也不太好)

然后,实际测试

我知道如何测试AT StringField的验证程序:

self.assertEqual(instance.schema.get('Keyword').validate(
       'XX X', instance), 
       "Validation failed: 'XX X': is an invalid keyword."
)
同样的方法应足以测试记录字段:

self.assertEqual(instance.schema.get('Latitude').validate(
    {'degrees':'x', 'minutes':'x', 'seconds':'x', 'bearing':'x'}, instance), 
    "Validation failed: invalid co-ordinates."
)
但我得到一个AttributeError:“dict”对象没有属性“form”

显然,验证器需要一个请求。因此,我在调试器中挣扎了一段时间,跟踪我能找到的每个validate/validate\u validators函数签名(我认为展示我的工作根本不会有成效),结果有两个

a) 语法错误,或 b) 验证程序无法报告失败的验证(仅返回“无”)

有没有人有一个ATExtensions记录字段的测试用例的例子,我可以抄袭?Products.ATExtensions中没有任何测试,我迷路了