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

Мое мнение

class MovieUpdateView(UpdateView):
    model = Movie
    template_name = "movie_update.html"
    fields = [
        'movie_name', 
        'movie_year', 
        'movie_director', 
        'movie_rating',
        'movie_cover_image'
    ]
    
    def get_success_url(self):
        return reverse_lazy('movie_detail', kwargs={'pk': self.object.pk})

Мое тестовое обновление

def setUp(self):
        self.movie = Movie.objects.create(
            movie_name='Avengers - Endgame',
            movie_year= 2019,
            movie_director='Anthony Russo, Joe Russo',
            movie_rating=10.0,
            movie_cover_image = '\movies\images\movies_covers\1f8373201516a4657649d61e97b1f91a_WhvCLCe.jpg'            
        )
    def test_movie_update_view(self):
        
        self.assertEqual(self.movie.movie_name, 'Avengers - Endgame')
 
        movie_update = {
            'movie_name'       :'Title Updated',
            'movie_director'   :'New Director',
        }
        
        response = self.client.post(
            reverse('movie_update', kwargs={'pk': self.movie.pk}), 
            data=movie_update
        )

        self.movie.refresh_from_db()
        self.assertEqual(self.movie.movie_name, 'Title Updated')
File "E:\\Users\\Santiago\\Desktop\\web-projects\\personal_blog\\reviews\\tests.py", line 99, in test_movie_update_view
self.assertEqual(self.movie.movie_name, 'Title Updated')
AssertionError: 'Avengers - Endgame' != 'Title Updated'

- Avengers - Endgame
+ Title Updated

Я хочу протестировать свой вид MovieUpdateView на основе общего класса UpdateView, но когда я пытаюсь обновить через тест, я не могу, но вручную через сайт, все в порядке, когда я обновляю, все в порядке, я все еще начинаю с тестов, может я что-то сделал неправильно!

Следите за тем, чтобы ваш тест не имитировал использование представления обновления.
Вам также следует опубликовать неизмененные данные, поскольку они будут загружены на страницу до того, как вы введете какие-либо обновления.

    def test_movie_update_view(self):
        
        self.assertEqual(self.movie.movie_name, 'Avengers - Endgame')
 
        movie_update = {
            'movie_name': self.movie.movie_name, 
            'movie_year': self.movie.movie_year, 
            ...
        }

        movie_update &= {
            'movie_name'       :'Title Updated',
            'movie_director'   :'New Director',
        }
        
        response = self.client.post(
            reverse('movie_update', kwargs={'pk': self.movie.pk}), 
            data=movie_update
        )

        self.movie.refresh_from_db()
        self.assertEqual(self.movie.movie_name, 'Title Updated')

Моя догадка заключается в том, что некоторые поля вашей модели не являются нулевыми, поэтому форма будет требовать их заполнения. Поскольку вы отправили только movie_name и movie_director, вы получили ошибку.

Вы должны assertTemplateUsed с follow=True в запросе, чтобы убедиться, что форма успешна, прежде чем утверждать, что данные

Вернуться на верх