1

テスト ケースを実行する前に、テスト データをデータベースに挿入したいと考えています。

django の詳細な出力から、すでにフィクスチャから多くのオブジェクトがロードされていることがわかりました。ただし、テーブルはまだテスト データベースで空です。テスト コードにブレークポイントを設定し、テスト データベースのテーブルを確認します。私はdjangoコードをデバッグし、実際にinsert sqlを実行し、影響を受けた行を返しました。しかし、まだテストデータベースでデータが見つかりません!

データベース サーバーは mysql です。

それを解決するためのアイデアはありますか?

django test の冗長出力

...
Loading 'goods_756399566_3my10' fixtures...
...
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.xml.zip fixture 'goods_756399566_3my10'...
No xml fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.xml.bz2 fixture 'goods_756399566_3my10'...
No xml fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json fixture 'goods_756399566_3my10'...
Installing json fixture 'goods_756399566_3my10' from '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json.gz fixture 'goods_756399566_3my10'...
No json fixture 'goods_756399566_3my10' in '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures'.
Trying '/Users/kane/git/blizzard_recommend/blizzard_recommend/src/web/fixtures' for goods_756399566_3my10.json.zip fixture 'goods_756399566_3my10'...
...
Installed 117 object(s) from 2 fixture(s)

更新

initial_data.json と同じデータをダンプしようとしましたが、このフィクスチャのデータはテスト データベースに挿入できます。テスト ケースを実行する前に django がフィクスチャの挿入に失敗した理由はわかりませんが、作業を続行するための回避策です。

回避策:

私の環境が原因かどうかはわかりません。とにかく、テストを行うときにdbをSQLLiteに変更しましたが、フィクスチャのデータをメモリデータベースにインポートするのに問題はありません。また、mysql をインストールせずに単体テストを実行することも理にかなっています。

4

1 に答える 1

0

遅くなりましたが、私自身の同様の問題を調査しているときに、この質問を見つけました。答えは、すべての Django テストがトランザクションにラップされているため、データベースをチェックするために他のプログラムに飛び乗っても、それが見えないということです。

この質問は、関連するドキュメントを指しています: Django Rest Framework testing save POST request data

(悲しいことに、これは私自身の問題の原因ではありません。)

于 2018-01-30T23:18:03.203 に答える