1

Я только начал использовать Factory boy в своем тесте, и он отлично работает.Test django post with factory_boy

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

Я хотел бы мое содержание тестов, чтобы быть что-то вроде:

a = self.client.post(
    my_url, 
    json.dumps(my_factory.stub()), 
    content_type="application/json") 
assert a.status_code == 403 

который не работает, очевидно. Я получаю <factory.containers.StubObject object at 0x7ffa34e375d0> is not JSON serializable Есть ли способ сделать это? Или мне нужно заполнить все данные сообщений самостоятельно? (я не тестирует саму форму или проверку, только после ответа.

Приветствия

ответ

1

<User> модель Джанго и не знает, как представить себя в качестве JSON. Вы должны использовать сериализатор как ModelSerializer из rest-framework или django builtin serializing возможностей: tests.py

from django.core import serializers 
data = serializers.serialize('json', my_factory.stub(), fields=('id')) 

a = self.client.post(
    my_url,data, 
    content_type="application/json") 
assert a.status_code == 403 

Пожалуйста, обратите внимание, что любое испытание с использованием django test client будет считаться интеграционным тестом большинством.

Это не значит, что это плохой тест. У меня много тестов, как и у вас, однако они являются интеграционными тестами.

Если вы хотите сделать это более детальным, попробуйте setup_view от here.

Смежные вопросы