2013-04-11 28 views
6

我正在將遺留系統的數據傳輸到Django中。爲了確保當前數據庫的完整性,我正在手動提交所有內容。如何在Django中測試手動DB事務代碼?

但是,編寫單元測試時,事務將不能正確回滾。由於TestCase可能使用了事務,有沒有什麼辦法可以正確測試依賴事務的Django中的代碼?

@transaction.commit_manually 
def import_records(): 
    # initial prep 
    try: 
     import_data() 
    except Exception as error: 
     rollback = True 
    except (KeyboardInterrupt, SystemExit): 
     sys.stdout.write("Import canceled\n") 
     rollback = True 
    if rollback is True: 
     transaction.rollback() 
    # save history of import 

回答

10

我相信你正在尋找TransactionTestCase它處理的建立和拆除不同然後正常TestCase

+0

太棒了 - 非常感謝!有關交易的文檔沒有提及如何正確測試。 https://docs.djangoproject.com/en/1.5/topics/db/transactions/ – strongriley 2013-04-12 21:56:05