TIL#90 Unit test created_at
今回の2番目のプロジェクトでunit testを学び、appごとにtestがあります.Pyと書きました.プロジェクトが進むにつれて、個人プロジェクトDanoshopClone、InstarmCloneもUnit Testに加入し、InstagramクローンコードプロジェクトでUnit Testを作成する際にどうすればいいか分からないという問題に直面している.
通常、ユニットテストは
例を挙げる.
問題は
unit testではsetUpで作成したデータを変数に割り当て、結果値はビューのデータと同じです.created_at.ユニットテストはstrftime形式で作成され、完了しました.
通常、ユニットテストは
def setUp(self):
によって仮想データを作成し、テストコードを迂回して結果を確認します.この場合、結果値はビューを回転したときに発生した値と同じでもよいです.例を挙げる.
# view.py 에 작성한 결과
result = [{
'id':data.id,
'name':data.name,
'price':data.price,
} for data in datas]
return JsonResponse({'data_list':result}, status=200)
# unit test 결과작성
self.assertEqual(response.json(),
{
'data_list':
[{
'id':1,
'name':'pencil',
'price':2000
}
{
'id':3,
'name':'pen',
'price':2500
}]
}
)
このようにして仮想データをsetUp()
に書き込み、その結果値を予測し、ビューに従って入力して実行すればよい.問題は
created_at
です.ビューの結果値にはcreated_at
があり、これはインスタンスの作成時の時間であるため、実行は予想できません.結論は問題を解決して、1つの招待状GETのビューを書いて、招待状の上で時間が必要で、だから結果の値はcreated_at
しかありません.出力がDateTimeField
の場合、結果値はdatetime(datetime....
の形で現れる.それを私たちが望むフォーマットに変換するには、strftime
の方法が必要です.unit testではsetUpで作成したデータを変数に割り当て、結果値はビューのデータと同じです.created_at.ユニットテストはstrftime形式で作成され、完了しました.
# views.py
results = [{
'id' : data.id,
'content' : data.content,
'image' : [data.image for data in Image.objects.filter(posting=data)],
'created_at': data.created_at.strftime('%Y-%m-%d %H:%M:%S')
} for data in posting]
# unit test
self.assertEqual(response.json(),
{'posting_list':[{
'id' : 11,
'content' : 'hihi',
'image' : ['cat.cat','cat1.cat'],
'created_at' : posting.created_at.strftime('%Y-%m-%d %H:%M:%S')
}]}
)
Reference
この問題について(TIL#90 Unit test created_at), 我々は、より多くの情報をここで見つけました https://velog.io/@dnpxm387/TIL-Unit-test-createdatテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol