﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
31414	"Django TestCase reads from ""production"" database with MySQL backend"	Danilo Favato	nobody	"The [Django documentation](https://docs.djangoproject.com/en/3.0/topics/testing/overview/#the-test-database) states that:

 **Finding data from your production database when running tests?**
 If your code attempts to access the database when its modules are compiled, this will occur before the test database is set up, with potentially unexpected results. For example, if you have a database query in module-level code and a real database exists, **production data could pollute your tests.**

However, the above mentioned behavior can occur in a brand new Django project using `mysql`backend.

== How to reproduce the error:
1. Start a new project and apply django migrations
2. Change database backend to `django.db.backends.mysql`
3. Create a new user by running `./manage.py createsuperuser`
4. Add the following test module to the project

{{{
#!div style=""font-size: 80%""
Code highlighting:
  {{{#!python
  # test.py
  from django.test import TestCase
  from django.contrib.auth.models import User

  class TestUserCount(TestCase):
    def test_empty_db(self):
        self.assertEqual(0, User.objects.count())
  }}}
}}}

The test above fails with `AssertionError: 0 != 1` but passes if you use a `sqlite` backend.


Environment:
* Python 3.8.1
* Django 3.0.4
* mysqlclient 1.4.6
* MariaDB 10.4.12"	Bug	new	Testing framework	3.0	Normal				Unreviewed	0	0	0	0	0	0
