Skip to Content

Contributors

odoo13 unittest: installed modules not available while testing

Hi there

I try to add some functionality to the payroll.

Now when I try to access the payroll stuff from within a test like so:

self.env['hr.payroll.structure']

I get a traceback:

Traceback (most recent call last):
   Debug Console, prompt 68, line 1
     import base64
   File 
"/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/api.py", 
line 463, in __getitem__
     return self.registry[model_name]._browse(self, (), ())
   File 
"/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/modules/registry.py", 
line 177, in __getitem__
     return self.models[model_name]
builtins.KeyError: 'hr.payroll.structure'

However, when I do exactly the same when not being in a unittest, everything 
works fine.

What could be the reason?

I am running on an ubuntu:

Distributor ID:    Ubuntu
Description:    Ubuntu 20.04.2 LTS
Release:    20.04
Codename:    focal

using Python:

python
Python 3.8.2 (default, Feb 25 2020, 13:04:52)
[GCC 9.2.1 20200224] on linux

thanks for your input

Robert



by robert - 05:36 - 28 Jul 2021

Follow-Ups

  • solved:Re: odoo13 unittest: installed modules not available while testing
    On 29.07.21 10:41, Petar Najman wrote:
    Looks like dependency issue.
    Check if module in which you created this TestCase has dependency to module hr_payroll

    that was the cause

    thanks

    robert


    by robert - 12:21 - 29 Jul 2021
  • Re: odoo13 unittest: installed modules not available while testing
    Hi,

    Looks like dependency issue.
    Check if module in which you created this TestCase has dependency to module hr_payroll

    Regards,

    Petar Najman
    Office: +381 11 328 17 18
    Mobile: +381 60 625 62 62
    Email: petar.najman@modoolar.com
    Web: www.modoolar.com



    On Thu, Jul 29, 2021 at 10:31 AM robert@redo2oo.ch <robert@redo2oo.ch> wrote:
    Thanks Simone
    On 29.07.21 08:42, Simone Orsi wrote:
    Hi,

    without your test class it is hard to guess what's wrong ;)

    Can you provide it?
    Here it is, with some explanations

    import base64
    from odoo.tests import common
    """
    # started with:
    bin/odoo -c etc/odoo.cfg
    # stopped in the debugger:
    self.env.cr.dbname
    'odoo13'
    self.env['hr.payroll.structure']
    hr.payroll.structure()
    # started with:
    bin/odoo -c etc/odoo.cfg -u aba_connector --test-enable --stop-after-ini
    # stopped in the debugger:
    self.env.cr.dbname
    'odoo13'
    self.env['hr.payroll.structure']
    Traceback (most recent call last):
    Debug Console, prompt 80, line 1
    import base64
    File "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/api.py", line 463, in __getitem__
    return self.registry[model_name]._browse(self, (), ())
    File "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/modules/registry.py", line 177, in __getitem__
    return self.models[model_name]
    builtins.KeyError: 'hr.payroll.structure'
    """
    class TestEmployee(common.TransactionCase):
    def setUp(self):
    # add env on cls and many other things
    super(TestEmployee, self).setUp()
    user_id = self.env["res.users"].search([])[0].id
    emp = self.env["hr.employee"].search(
    [("name", "=", "Abigail Peterson")]
    ) # demo data
    if not emp:
    emp = self.env["hr.employee"].search([("user_id", "=", 2)])
    if not emp:
    emp = self.env["hr.employee"].create({"user_id": user_id, "name": "Fritz"})
    self.emp = emp
    def test_can_open(self):
    records = self.env["hr.employee"].search([])
    # payroll is installed
    # nevertheless the following line crashes
    # if I add that same line outside of a test
    # it loads fine
    structure = self.env["hr.payroll.structure"] # <------------------- dies
    assert records

    Bests

    On Wed, Jul 28, 2021 at 5:37 PM robert@redo2oo.ch <robert@redo2oo.ch> wrote:
    Hi there
    
    I try to add some functionality to the payroll.
    
    Now when I try to access the payroll stuff from within a test like so:
    
    self.env['hr.payroll.structure']
    
    I get a traceback:
    
    Traceback (most recent call last):
       Debug Console, prompt 68, line 1
         import base64
       File 
    "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/api.py", 
    line 463, in __getitem__
         return self.registry[model_name]._browse(self, (), ())
       File 
    "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/modules/registry.py", 
    line 177, in __getitem__
         return self.models[model_name]
    builtins.KeyError: 'hr.payroll.structure'
    
    However, when I do exactly the same when not being in a unittest, everything 
    works fine.
    
    What could be the reason?
    
    I am running on an ubuntu:
    
    Distributor ID:    Ubuntu
    Description:    Ubuntu 20.04.2 LTS
    Release:    20.04
    Codename:    focal
    
    using Python:
    
    python
    Python 3.8.2 (default, Feb 25 2020, 13:04:52)
    [GCC 9.2.1 20200224] on linux
    
    thanks for your input
    
    Robert
    
    
    

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe



    --
    Simone Orsi

    Full stack Python web developer, Odoo specialist, Odoo Community Board Member, in love with open source.

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe


    by Petar Najman - 10:40 - 29 Jul 2021
  • Re: odoo13 unittest: installed modules not available while testing
    Thanks Simone
    On 29.07.21 08:42, Simone Orsi wrote:
    Hi,

    without your test class it is hard to guess what's wrong ;)

    Can you provide it?
    Here it is, with some explanations

    import base64
    from odoo.tests import common
    """
    # started with:
    bin/odoo -c etc/odoo.cfg
    # stopped in the debugger:
    self.env.cr.dbname
    'odoo13'
    self.env['hr.payroll.structure']
    hr.payroll.structure()
    # started with:
    bin/odoo -c etc/odoo.cfg -u aba_connector --test-enable --stop-after-ini
    # stopped in the debugger:
    self.env.cr.dbname
    'odoo13'
    self.env['hr.payroll.structure']
    Traceback (most recent call last):
    Debug Console, prompt 80, line 1
    import base64
    File "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/api.py", line 463, in __getitem__
    return self.registry[model_name]._browse(self, (), ())
    File "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/modules/registry.py", line 177, in __getitem__
    return self.models[model_name]
    builtins.KeyError: 'hr.payroll.structure'
    """
    class TestEmployee(common.TransactionCase):
    def setUp(self):
    # add env on cls and many other things
    super(TestEmployee, self).setUp()
    user_id = self.env["res.users"].search([])[0].id
    emp = self.env["hr.employee"].search(
    [("name", "=", "Abigail Peterson")]
    ) # demo data
    if not emp:
    emp = self.env["hr.employee"].search([("user_id", "=", 2)])
    if not emp:
    emp = self.env["hr.employee"].create({"user_id": user_id, "name": "Fritz"})
    self.emp = emp
    def test_can_open(self):
    records = self.env["hr.employee"].search([])
    # payroll is installed
    # nevertheless the following line crashes
    # if I add that same line outside of a test
    # it loads fine
    structure = self.env["hr.payroll.structure"] # <------------------- dies
    assert records

    Bests

    On Wed, Jul 28, 2021 at 5:37 PM robert@redo2oo.ch <robert@redo2oo.ch> wrote:
    Hi there
    
    I try to add some functionality to the payroll.
    
    Now when I try to access the payroll stuff from within a test like so:
    
    self.env['hr.payroll.structure']
    
    I get a traceback:
    
    Traceback (most recent call last):
       Debug Console, prompt 68, line 1
         import base64
       File 
    "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/api.py", 
    line 463, in __getitem__
         return self.registry[model_name]._browse(self, (), ())
       File 
    "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/modules/registry.py", 
    line 177, in __getitem__
         return self.models[model_name]
    builtins.KeyError: 'hr.payroll.structure'
    
    However, when I do exactly the same when not being in a unittest, everything 
    works fine.
    
    What could be the reason?
    
    I am running on an ubuntu:
    
    Distributor ID:    Ubuntu
    Description:    Ubuntu 20.04.2 LTS
    Release:    20.04
    Codename:    focal
    
    using Python:
    
    python
    Python 3.8.2 (default, Feb 25 2020, 13:04:52)
    [GCC 9.2.1 20200224] on linux
    
    thanks for your input
    
    Robert
    
    
    

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe



    --
    Simone Orsi

    Full stack Python web developer, Odoo specialist, Odoo Community Board Member, in love with open source.

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe



    by robert - 10:31 - 29 Jul 2021
  • Re: odoo13 unittest: installed modules not available while testing
    Hi,

    without your test class it is hard to guess what's wrong ;)

    Can you provide it?

    Bests

    On Wed, Jul 28, 2021 at 5:37 PM robert@redo2oo.ch <robert@redo2oo.ch> wrote:
    Hi there
    
    I try to add some functionality to the payroll.
    
    Now when I try to access the payroll stuff from within a test like so:
    
    self.env['hr.payroll.structure']
    
    I get a traceback:
    
    Traceback (most recent call last):
       Debug Console, prompt 68, line 1
         import base64
       File 
    "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/api.py", 
    line 463, in __getitem__
         return self.registry[model_name]._browse(self, (), ())
       File 
    "/home/robert/projects/odoo13/odoo13/downloads/odoo-13.0.post20201211/odoo/modules/registry.py", 
    line 177, in __getitem__
         return self.models[model_name]
    builtins.KeyError: 'hr.payroll.structure'
    
    However, when I do exactly the same when not being in a unittest, everything 
    works fine.
    
    What could be the reason?
    
    I am running on an ubuntu:
    
    Distributor ID:    Ubuntu
    Description:    Ubuntu 20.04.2 LTS
    Release:    20.04
    Codename:    focal
    
    using Python:
    
    python
    Python 3.8.2 (default, Feb 25 2020, 13:04:52)
    [GCC 9.2.1 20200224] on linux
    
    thanks for your input
    
    Robert
    
    
    

    _______________________________________________
    Mailing-List: https://odoo-community.org/groups/contributors-15
    Post to: mailto:contributors@odoo-community.org
    Unsubscribe: https://odoo-community.org/groups?unsubscribe



    --
    Simone Orsi

    Full stack Python web developer, Odoo specialist, Odoo Community Board Member, in love with open source.

    by Simone Orsi - 08:40 - 29 Jul 2021