亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django 測試正在使用 manage.py 測試應用程序,但不適用于 manage.py 測試

Django 測試正在使用 manage.py 測試應用程序,但不適用于 manage.py 測試

藍山帝景 2022-01-05 10:26:52
我寫了一個測試用例來檢查我需要一個教師對象的視圖。class ShowTeacherViewTest(TestCase):@classmethoddef setUpTestData(cls):    gender = Gender.objects.create(gender='Male')    gender_id = gender.id    Teacher.objects.create(            gender_id=gender_id,            first_name='Maria',            last_name='Santana',)def test_view_uses_correct_template(self):    teacher = Teacher.objects.first().id    response = self.client.get(reverse('get_student'), {'teacher': teacher})    self.assertEqual(response.status_code, 200)當我運行“manage.py test app”時,一切正常。如果我正在運行“manage.py test”,這個錯誤就會消失: self.model._meta.object_name students.gender.Gender.DoesNotExist: Gender matching query does not exist.由于一些外鍵,我也在其他模型測試中使用這些教師對象。那么,在每次測試之前是否有可能或需要重置 test_db?
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

回溯顯示此行失?。?/p>

gender_male = Gender.objects.get(pk=1)

您通常不應該在代碼或測試中硬核主鍵。當您使用 運行所有測試時manage.py test,對象是使用不同的主鍵創建的,因此get(pk=1)失敗。

如果您確實需要在代碼中對 pk 進行硬編碼,則需要在測試類中使用正確的 pk 創建對象:

gender = Gender.objects.create(pk=1, gender='Male')

但是,更好的解決方法是更改代碼,使其不使用硬編碼的 pk。

gender_male = Gender.objects.get(gender='Male')


查看完整回答
反對 回復 2022-01-05
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號