title: pytest and Failed: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it
body: <p>During invoking <strong>pytest</strong> from the shell I get the following output, because my test is stored in <strong>apps.business.metrics.tools.tests.py</strong>, and during import of the module</p>
  
  <p><code>apps/business/metrics/widgets/employees/utilization.py</code></p>
  
  <p>makes a live call to SQL during module invocation. This is done by </p>
  
  <p><code>get_metric_columns('EmployeeUtilization', shapers=SHAPERS)</code></p>
  
  <p>and pytest complaints:</p>
  
  <pre><code>➜ pytest
  =========================================================================== test session starts ===========================================================================
  platform linux -- Python 3.6.8, pytest-4.0.0, py-1.7.0, pluggy-0.8.0
  Django settings: config.settings.local (from ini file)
  rootdir: /home/dmitry/Projects/analytics/backend, inifile: pytest.ini
  plugins: django-3.4.7, pylama-7.6.6, django-test-plus-1.1.1, celery-4.2.1
  collected 60 items / 1 errors                                                                                                                                             
  
  ================================================================================= ERRORS ==================================================================================
  __________________________________________________________ ERROR collecting apps/business/metrics/tools.tests.py __________________________________________________________
  ../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/py/_path/local.py:668: in pyimport
      __import__(modname)
  apps/business/metrics/__init__.py:3: in &lt;module&gt;
      from .widgets import *  # noqa
  apps/business/metrics/widgets/__init__.py:1: in &lt;module&gt;
      from . import help  # noqa
  apps/business/metrics/widgets/help.py:1: in &lt;module&gt;
      from .employees.utilization import EmployeeSwarmUtilization
  apps/business/metrics/widgets/employees/utilization.py:19: in &lt;module&gt;
      get_metric_columns('EmployeeUtilization', shapers=SHAPERS)
  apps/business/metrics/tools.py:132: in get_metric_columns
      m = get_metric(metric, period=p, shapers=shapers)
  apps/business/metrics/data/__init__.py:23: in get_metric
      return metrics[name](*args, **kwargs)
  apps/business/metrics/data/abstract.py:441: in __init__
      self._to_dataframe(self.sql or self._ingest())
  apps/business/metrics/data/abstract.py:472: in _to_dataframe
      source, connection, params=query_params, index_col=self.index
  ../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/pandas/io/sql.py:381: in read_sql
      chunksize=chunksize)
  ../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/pandas/io/sql.py:1413: in read_query
      cursor = self.execute(*args)
  ../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/pandas/io/sql.py:1373: in execute
      cur = self.con.cursor()
  ../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/django/db/backends/base/base.py:255: in cursor
      return self._cursor()
  ../../../.pyenv/versions/3.6.8/envs/cam/lib/python3.6/site-packages/django/db/backends/base/base.py:232: in _cursor
      self.ensure_connection()
  E   Failed: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  ========================================================================= 1 error in 2.43 seconds =========================================================================
  </code></pre>
  
  <h3>Is there a way to handle such situation with pytest?</h3>
  
  <p>I understand I can convert the <strong>get_metric_columns('EmployeeUtilization', shapers=SHAPERS)</strong> into a partial func and change the implementation, but is there any other way around?</p>