Почему свойство, установленное в django.test.TestCase.setUp, сбрасывается до значения по умолчанию в тестовом методе? - PullRequest
0 голосов
/ 02 июля 2019

У меня есть класс тестирования, в котором я устанавливаю свойство объектов как часть setUp(), например:

myObj = model.MyModel.objects.filter(myfilters)
myObj.the_property = 1234
myObj.save()

Перед этими тремя строками setUp() вызывает внешний метод, который создает объект, который я затем выбираю, используя указанный оператор filter.

Все еще в setUp(), я проверяю, что свойство было установлено правильно:

  • сначала я просто

    print(myObj.the_property)
    
  • А потом я даже

    q = models.MyObj.objects.filter(myfilters)
    print(q.values)
    

В обоих операторах печати я вижу, что myObj.the_property было установлено на 1234, как и ожидалось.

Затем, в test_ -методе, я делаю

obj = models.MyObj.objects.filter(myfilters)[0]
print(obj.the_property)

И на этот раз оператор print печатает None.

Это должно быть сделано? Как я могу выполнить это задание один раз, непосредственно перед началом испытаний?

Я легко могу решить проблему, перенеся задание в тест, но тогда я повторюсь.

Я пытался найти проблему с моим кодом, но, похоже, эта проблема возникла где-то внутри Django. Я ...

  • ... проверил значение id. myfilters каждый раз приноси мне один и тот же предмет. Я определенно смотрю на правильный объект.

  • ... я использую только один test_ -метод. Никаких побочных эффектов от других тестов быть не может.

  • ... переместил мои проверки внутри метода теста в самое начало теста, другого кода перед строками filter и print нет.

  • ... вырезать / вставить назначение и save() в начало моего test_ -метода (до строки filter), и когда я это делаю, он работает как положено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...