Я бы рекомендовал не делать этого. У вас не будет полного контроля над состоянием базы данных при выполнении тестов, и прохождение теста может зависеть от содержимого производственной базы данных. И будет невозможно проверить крайние случаи, прежде чем они произойдут. Не говоря уже о том, что если вы что-то напутаете, вы рискуете заполнить вашу производственную базу данных тестовыми данными или уничтожить записи из вашей производственной базы данных.
Django делает создание тестовых баз данных очень простым. При использовании команды python manage.py test [app_name]
для вас будет создана тестовая база данных с теми же настройками, что и для вашей базы данных производства / разработки.
Чтобы получить эту функциональность, укажите документацию по тестированию Django:
Если ваши тесты основаны на доступе к базе данных, такой как создание или запрос моделей, обязательно создайте свои тестовые классы как подклассы django.test.TestCase, а не unittest.TestCase.
Подробнее о тестовой базе данных Django: https://docs.djangoproject.com/en/2.1/topics/testing/overview/#the-test-database
Что касается вашей заботы о поддержке тестовой базы данных, Django раскручивает базу данных до запуска тестов и уничтожает базу данных после их завершения. Тестовая база данных также создается на вашем локальном компьютере (при условии, что вы запускаете ее на своем локальном компьютере). Поэтому я не думаю, что цены должны быть проблемой.
Edit:
При заполнении тестовой базы данных перед тестами:
1. Создание экземпляров в тесте до запуска логики теста. Они будут уничтожены после завершения теста. Пример: * 1 023 *
class Tester(TestCase):
def test_works(self):
instance = Model.create(data=data)
# then run your test logic
или
2. Создание экземпляров в методе setUp
тестового класса. Все в setUp
будет (пере) создаваться перед каждым методом тестирования класса и уничтожаться после завершения каждого теста. Пример: * +1032 *
class Tester(TestCase):
def setUp(self):
self.instance = Model.create(data=data)
def test_works(self):
# run test logic with access to self.instance
или
3. Использование приборов для заполнения перед запуском тестов. Определите данные для некоторых экземпляров ваших моделей в каталоге fixtures
в любом приложении, в котором вы тестируете (каталог, вероятно, нужно будет создать). Вы можете определить их в JSON или YAML, и я уверен, что другие форматы. Тогда в ваших тестах:
class Tester(TestCase):
def setUp(self):
fixtures = ['/myapp/fixtures/dump.json']
def test_works(self):
# test logic and you can access all the instances created from the data in dump.json
Подробнее о светильниках: https://django -testing-docs.readthedocs.io / en / latest / fixtures.html
Если вы хотите, чтобы в вашей тестовой базе данных были данные, аналогичные производственной базе данных, вы можете извлечь данные из производственной базы данных и сохранить их в фиксаторе.