跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 系统测试
  4. 利用 odoo 自带类 odoo.test.common.TransactionCase 进行单元测试,发现 对 唯一性验证 @api.constrain 中的代码不执行,除了直接添加 数据库 约束的方法,有没有办法 执行 @api.constrain 中代码的方法?

利用 odoo 自带类 odoo.test.common.TransactionCase 进行单元测试,发现 对 唯一性验证 @api.constrain 中的代码不执行,除了直接添加 数据库 约束的方法,有没有办法 执行 @api.constrain 中代码的方法?

已定时 已固定 已锁定 已移动 Odoo 系统测试
3 帖子 1 发布者 2.1k 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • F 离线
    F 离线
    franciewang
    发表于 最后由 编辑
    #1
    • 测试 员工 唯一性 代码:
    def test_staff_name_unique(self):
            """
            2、测试“名称“的唯一性。
            创建{名称}=销售员1 ,{用户}=空,{销售员}=勾选,{采购员}=非勾选,{发货人}=非勾选。
            报{名称}不能重复错误
            :return:
            """
            same_name = '销售员1'
            vals_list = [
                {'name': same_name, 'is_sale_man': True},
                {'name': same_name, 'is_sale_man': True},
            ]
            self.env['archives.staff'].create(vals_list[0])
            try:
                record = self.env['archives.staff'].create(vals_list[1])
                if record:
                    print 'Failed! \n 创建第二个 名为 “%s” 的员工 成功 \n [员工]档案{名称} 唯一性 测试有误。' % same_name
            except Exception as e:
                print '创建第二个 名为 “%s” 的员工 失败\n error_info:%s \n [员工]档案{名称} 唯一性 测试无误。' \
                      % (e.message, same_name)
    
    • 员工 唯一性 验证代码:
    @api.constrains('name')
        def _check_name(self):
            count = self.env['archives.common_archive'].search_count(
                [('name', '=', self.name), ('id', '!=', self.id)])
            if not count:
                return
            raise ValidationError('名称已存在')
    
    • 测试 console 内容:

    Testing started at 上午11:03 ...
    /home/francie/miniOdoo/venv/bin/python /home/francie/pycharm-2019.2/helpers/pycharm/_jb_unittest_runner.py --target test_staff.StaffTestCase.test_staff_name_unique
    Launching unittests with arguments python -m unittest test_staff.StaffTestCase.test_staff_name_unique in /home/francie/miniOdoo/addons_mine/archives/tests/archives
    Ran 1 test in 0.962s
    OK
    Process finished with exit code 0
    No handlers could be found for logger "odoo.fields"
    Failed!
    创建第二个 名为 “销售员1” 的员工 成功
    [员工]档案{名称} 唯一性 测试有误。

    1 条回复 最后回复
    0
    • F 离线
      F 离线
      franciewang
      发表于 最后由 编辑
      #2

      debug的时候,是进入了 _check_name 方法的, 但是 变量 count 第二次创建的时候,其值 仍旧为 0 ,这到底是什么原因?

      1 条回复 最后回复
      0
      • F 离线
        F 离线
        franciewang
        发表于 最后由 编辑
        #3

        搞清楚原因了:
        员工 唯一性 验证代码中,获取count 变量处 是有问题的。

        count = self.env[' archives.common_archive'].search_count(
        [('name', '=', self.name), ('id', '!=', self.id)])
        这一行有问题, env 后面跟的 环境 是错误的, 换成 self._name 就好了, 略显尴尬。。

        1 条回复 最后回复
        0

        你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

        厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

        有了你的建议,这篇帖子会更精彩哦 💗

        注册 登录
        回复
        • 在新帖中回复
        登录后回复
        • 从旧到新
        • 从新到旧
        • 最多赞同


        • 登录

        • 没有帐号? 注册

        • 登录或注册以进行搜索。
        • 第一个帖子
          最后一个帖子
        0
        • 版块
        • 标签
        • 热门
        • 用户
        • 群组