私は.xmlファイルをアップロードするDjangoテストを設計しています。ファイルが正しい場合(スキーマによって検証されます)、プロジェクトのデータベースに追加されたデータです。ビューのコードのDjangoテストでフォームからClient.post()を使ってファイルをアップロードするにはどうすればよいですか?
パート:
Iは、フォームの以下のクラスがある:
class UploadFileForm(forms.Form):
docfile = forms.FileField(
label='Select a file',
help_text='.xml file'
)
形態が使用されているHTML:
<form action="{% url 'add_question_w_subject_topic' subject.id topic.id %}" enctype="multipart/form-data" method="post">
{% csrf_token %}
<p>{{ form.non_field_errors }}</p>
<p>{{ form.docfile.label_tag }}</p>
<p>
{{ form.docfile.errors }}
{{ form.docfile }}
</p>
<p><input type="submit" value="Upload" /></p>
</form>
そして失敗したテスト:
def test_question_file_wrong_format(self):
c = Client()
script_dir = os.path.dirname(__file__)
rel_path = "xml_files/wrong_format.xml"
abs_file_path = os.path.join(script_dir, rel_path)
response = c.post('/add/question/'+ str(self.subj1.id) +'/'
+ str(self.topc1.id) + '/', {'docfile':
open(abs_file_path, 'rb')})
self.assertEquals(response.status_code, 200)
お知らせこのライン:
response = c.post('/add/question/'+ str(self.subj1.id) +'/'
+ str(self.topc1.id) + '/', {'docfile':
open(abs_file_path, 'rb')})
私はいくつかの方法を試してみました。それらのすべてで、私はthisを読んだ200
、
を期待していたが、それは、ステータスコード302
を返し、私は自分のコードにその解決策を適応させるのに十分なそれを理解することはできません。
詳細が必要な場合は、教えてください。申し訳ありませんが既に答えられている質問です。
何か助けやヒントがあれば幸いです。ありがとう!
は、私は、フォームの検証エラーを取得し、私はそれ –
私はこのアプローチを試しにチェックしますありがとう------------------------------------------キャプチャされたstdoutコール----- -------------------------------------------------- --------
- my_file
- このフィールドは必須です。
– Derekテストケースの次の行で、 'response.context ['form']。errorsを見て、原因を確認してください。 – nimasmi