Правильно ли я тестирую форму в Django?
Неправильно.
1. Проверку на аутентифицацию делать принято как@login_required
def...
это удобно - сразу обрабатывается ситуация с перенаправлением на страницу логина и т.д.
2. Сначала нужно создать объект. Обработка формы стандартным методом для POST:form = CreviewForm(request.POST or None)
if request.method == 'POST' and form.is_valid():
        obj = form.save(commit=False)
        obj.course = course
        ....
        obj.save()
        form.save() 
else:
    возврат к представлению для исправления данных и т.д.
Этот формат сам проверит и csrf, и данные в форме, и прочая-прочая
response = self.client.post('/addcreview1',
                                    {'id': "1", "creview": "course", "userview": "user", "review": "ревьюшка"})
В поле creview передается строка, а нужно число.