我正在通过单元测试教程来测试用户访问权限。这是我的测试类
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
中的演示用户看起来完全一样,该用户位于我安装演示数据的数据库中。
答案 0 :(得分:0)
即使您在数据库中设置了用户,也需要确保外部ID为&#34; base.user_demo&#34;建立。如果您已拥有该用户:
如果您想重新开始使用新用户,您还可以按以下方式定义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。错误消息消失了。