Odoo表单测试报错:AssertionError: field_name未在视图中找到
Odoo测试中Form赋值带groups字段报错的解决办法
问题原因
field_name字段的视图定义里加了groups="base.group_no_one",而base.group_no_one是Odoo的特殊用户组,默认没有任何用户属于这个组。测试时当前用户没有该组权限,Form类是模拟前端视图渲染逻辑的,会判定这个字段不在视图范围内,因此抛出AssertionError: field_name was not found in the view错误。
解决办法
临时给测试用户加权限
在创建Form对象前,给当前测试用户添加base.group_no_one组权限,操作完成后恢复原有组,避免影响其他测试:# 保存用户原有组 original_groups = self.env.user.groups_id # 添加目标权限组 self.env.user.groups_id += self.env.ref('base.group_no_one') # 执行Form赋值操作 my_form = Form(self.env['my.model']) my_form.field_name = 'test' record = my_form.save() # 恢复用户原有组 self.env.user.groups_id = original_groups绕过Form直接操作记录
如果不需要模拟前端视图交互,直接创建或写入记录即可,不受视图权限限制:# 直接创建新记录并赋值 record = self.env['my.model'].create({'field_name': 'test'}) # 或者更新已有记录 record.write({'field_name': 'test'})修改视图权限(测试环境可选)
如果测试场景需要该字段对普通用户可见,可临时修改视图的groups属性,比如改为测试用户所属的组,或者直接移除groups修饰符:<!-- 修改为普通用户组 --> <field name="field_name" groups="base.group_user"/> <!-- 或者移除权限限制 --> <field name="field_name"/>
内容的提问来源于stack exchange,提问作者Alesis Joan
相关产品推荐
相关产品推荐

