Django 1.7แนะนำการโยกย้ายฐานข้อมูล
เมื่อเรียกใช้การทดสอบหน่วยใน Django 1.7 จะบังคับให้มีการโยกย้ายซึ่งใช้เวลานาน ดังนั้นฉันต้องการข้ามการย้าย django และสร้างฐานข้อมูลในสถานะสุดท้าย
ฉันรู้ว่าการเพิกเฉยต่อการย้ายข้อมูลอาจเป็นแนวทางปฏิบัติที่ไม่ดีเนื่องจากส่วนนั้นจะไม่มีการทดสอบโค้ด แต่นั่นไม่ใช่กรณี: ฉันกำลังเรียกใช้การย้ายข้อมูลทั้งหมดในเซิร์ฟเวอร์ทดสอบ CI (เจนกินส์) ฉันต้องการข้ามการย้ายข้อมูลในการทดสอบในพื้นที่เท่านั้นซึ่งความเร็วมีความสำคัญ
บริบทบางส่วน:
จนถึง Django 1.6เมื่อใช้ South ฉันใช้การตั้งค่าSOUTH_TESTS_MIGRATE :
ตามค่าเริ่มต้นคำสั่ง syncdb ของ South จะใช้การย้ายข้อมูลด้วยหากทำงานในโหมดไม่โต้ตอบซึ่งรวมถึงเวลาที่คุณกำลังทำการทดสอบคำสั่งจะเรียกใช้การย้ายข้อมูลทุกครั้งที่คุณเรียกใช้การทดสอบ
หากคุณต้องการให้นักวิ่งทดสอบใช้ syncdb แทนการโอนย้ายตัวอย่างเช่นหากการย้ายข้อมูลของคุณใช้เวลานานเกินไปในการใช้งานให้ตั้งค่า SOUTH_TESTS_MIGRATE = False ใน settings.py
อย่างไรก็ตามSyncDBไม่อยู่อีกต่อไปตอนนี้ก็โยกย้าย
และจาก Django 1.8ฉันจะใช้พารามิเตอร์--keepdb :
ตัวเลือก --keepdb สามารถใช้เพื่อรักษาฐานข้อมูลการทดสอบระหว่างการทดสอบ สิ่งนี้มีข้อดีของการข้ามทั้งการดำเนินการสร้างและทำลายซึ่งช่วยลดเวลาในการเรียกใช้การทดสอบได้มากโดยเฉพาะอย่างยิ่งการทดสอบในชุดทดสอบขนาดใหญ่ หากไม่มีฐานข้อมูลทดสอบฐานข้อมูลจะถูกสร้างขึ้นในการรันครั้งแรกจากนั้นจะคงไว้สำหรับการรันครั้งต่อ ๆ ไป การย้ายข้อมูลที่ไม่ได้ใช้จะถูกนำไปใช้กับฐานข้อมูลทดสอบก่อนที่จะเรียกใช้ชุดทดสอบ
ดังนั้นคำถามนี้ จำกัด ไว้ที่ Django 1.7
django-test-without-migrations
แพคเกจได้รับประโยชน์จริงๆสำหรับฉันคุณอาจต้องการที่จะเปลี่ยนคำตอบที่ได้รับการยอมรับที่จะstackoverflow.com/a/28993456/200224