Why do I have a 'KeyError' error when using when using Django's coverage tool

1.4k views Asked by At

Im developing a django API. Now im doing some tests on the endpoints and when i execute 'python manage.py test' everything goes well. But when i use the flag '--with-coverage' or 'coverage run --source='.' manage.py test app && coverage report' i get the error 'KeyError: 'BREAK_LOOP'. Someone can help me?

Code

from django.test import TestCase
import requests

class Teste(TestCase):
   url = "localhost://endpoint/"

   def test(self):

       token = self.token            
   
       headers={
           'content-type'  : 'application/json',
           'Authorization' : token
       }
    
       response = requests.get(self.url, headers=headers)

       self.assertEqual(response.status_code, 403)

Error

nosetests --with-coverage --verbosity=1
Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
    utility.execute()
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django/core/management/__init__.py", line 395, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django/core/management/commands/test.py", line 23, in run_from_argv
    super().run_from_argv(argv)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django/core/management/base.py", line 328, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django/core/management/base.py", line 369, in execute
    output = self.handle(*args, **options)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django/core/management/commands/test.py", line 53, in handle
    failures = test_runner.run_tests(test_labels)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django_nose/runner.py", line 308, in run_tests
    result = self.run_suite(nose_argv)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/django_nose/runner.py", line 244, in run_suite
    nose.core.TestProgram(argv=nose_argv, exit=False,
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/core.py", line 118, in __init__
    unittest.TestProgram.__init__(
  File "/usr/lib/python3.8/unittest/main.py", line 100, in __init__
    self.parseArgs(argv)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/core.py", line 145, in parseArgs
    self.config.configure(argv, doc=self.usage())
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/config.py", line 346, in configure
    self.plugins.configure(options, self)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/plugins/manager.py", line 284, in configure
    cfg(options, config)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/plugins/manager.py", line 99, in __call__
    return self.call(*arg, **kw)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/plugins/manager.py", line 167, in simple
    result = meth(*arg, **kw)
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/nose/plugins/cover.py", line 104, in configure
    import coverage
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/coverage/__init__.py", line 10, in <module>
    from coverage.control import coverage, process_startup
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/coverage/control.py", line 13, in <module>
    from coverage.html import HtmlReporter
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/coverage/html.py", line 10, in <module>
    from coverage.results import Numbers
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/coverage/results.py", line 7, in <module>
    from coverage.parser import CodeParser
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/coverage/parser.py", line 315, in <module>
    OP_BREAK_LOOP = _opcode('BREAK_LOOP')
  File "/home/user/.virtualenvs/env/lib/python3.8/site-packages/coverage/parser.py", line 274, in _opcode
    return opcode.opmap[name]
KeyError: 'BREAK_LOOP'
1

There are 1 answers

0
Bhuban ghimire On

Updating coverage version solved my this issue.