跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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 发布者 770 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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
        • 版块
        • 标签
        • 热门
        • 用户
        • 群组