如何插入演示用户进行测试?

时间:2017-08-20 17:11:45

标签: python openerp odoo-10

我正在通过单元测试教程来测试用户访问权限。这是我的测试类

class TestTodo(TransactionCase):

    def setUp(self, *args, **kwargs):
        result = super(TestTodo, self).setUp(*args, **kwargs)
        user_demo = self.env.ref('base.user_demo')
        self.env = self.env(user = user_demo)
        return result

    def test_record_rule(self):
        "Test per user record rules"
        Todo = self.env['todo.task']
        task = Todo.sudo().create({'name': 'Admin Task'})
        with self.assertRaises(AccessError):
            Todo.browse([task.id]).name

当我运行测试时,我收到此错误

2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo: ERROR: test_record_rule (odoo.addons.todo_app.tests.test_todo.TestTodo)
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:  Test per user record rules
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo: Traceback (most recent call last):
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "c:\users\brubin\documents\odoo-dev\custom-addons\todo_app\tests\test_todo.py", line 9, in setUp
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "C:\Program Files (x86)\Odoo 10.0\server\odoo\api.py", line 785, in ref
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "C:\Program Files (x86)\Odoo 10.0\server\odoo\addons\base\ir\ir_model.py", line 1091, in xmlid_to_object
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "C:\Program Files (x86)\Odoo 10.0\server\odoo\addons\base\ir\ir_model.py", line 1075, in xmlid_to_res_model_res_id
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "<decorator-gen-5>", line 2, in xmlid_lookup
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "C:\Program Files (x86)\Odoo 10.0\server\odoo\tools\cache.py", line 87, in lookup
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:    File "C:\Program Files (x86)\Odoo 10.0\server\odoo\addons\base\ir\ir_model.py", line 1064, in xmlid_lookup
2017-08-20 17:02:19,861 25460 ERROR todo odoo.addons.todo_app.tests.test_todo:  ValueError: External ID not found in the system: base.user_demo

我认为这是因为我的数据库中没有演示用户(我创建了这个数据库,-d标志为odoo-bin而不是通过数据库管理器创建它。有没有办法可以添加演示用户而无需删除和重新创建我的数据库?我尝试在Odoo中访问用户并创建一个名为demo的新用户,但测试仍然出错。我可以在res_users表中看到演示用户,它在该表中与res_users中的演示用户看起来完全一样,该用户位于我安装演示数据的数据库中。

2 个答案:

答案 0 :(得分:0)

即使您在数据库中设置了用户,也需要确保外部ID为&#34; base.user_demo&#34;建立。如果您已拥有该用户:

  1. 激活开发者模式
  2. 导航至设置&gt;技术&gt;序列&amp;标识符
  3. 查找当前用户的外部ID并更新标识符名称
  4. 如果您想重新开始使用新用户,您还可以按以下方式定义XML记录:

    <!--
    This will generate an external identifier
    of "{your custom module name}.user_demo"
    -->
    
    <record id="user_demo" model="res.users">
        <field name="name"/>
    
        ...
    </record>
    

答案 1 :(得分:0)

我遇到了同样的问题,同一个电子书的代码相同。我刚刚删除了数据库并重新使用了odoo-bin。错误消息消失了。