2011-08-04 1 views
0

私はプロジェクトでDrupalを使って、テストを高速化する方法(CucumberとSeleniumを使用しています)を見つけようとしています。そして、一連のステップでどのテーブルが変更されたのかを確認しようとしています。だから、ダンプを元に戻して、各テストケース間でそれらのテーブルをリセットすることができます。私はDrupalで作業していますが、2つのデータベース間で差分をとり、特定のセッションでどのテーブルが更新されているかを確認したいと思います。どうすればいいですか?

現時点では、SimpletestのDrupalテストフレームワークは、テストに必要なすべてのモジュールのテーブルをインストールしてセットアップすることで動作します。これは低速テストに向いており、それぞれについてdbダンプをロードすることで同様のアプローチを模倣しますテスト。

サイトでは、統合テストには「既知の状態」がありますから、待機するのではなく、毎回その時点に戻すほうが速くなると思います20秒程度でデータベースを削除し、各テスト実行の間にダンプファイルをパイプし直します。

しかし、私は2つのダンプファイル(すなわちbefore.I.create.a.node.sql、およびafter.I.create.a.node.sql)の間でdiffingを試してみると、出力は読み込めない直列化されたPHPの読み込みであり、わかりません。

私はテストケース間で削除して再構築する必要のあるテーブルを手助けするために使用できるツールがありますので、各テストで20秒のヒットは発生しません。モジュール私は一緒に働いている?

私はgetting cucumber to work with PHPとここに概説アイデアを以下のよ、はい、私はsimilar subject

おかげで、ここで[この質問を見てきました!

答えて

0

Drupalは、データベースにシリアル化されたPHPをたくさん格納します。しかし、その主要部分はキャッシュテーブルに保持されます。 cachecache_fieldcache_menuなどのように、データベースをダンプする前に安全に切り捨てることができます。

simpletestテーブルがある場合は、それらを削除できます。それらはすべて一時的なもので、あなたのSimpletestテストスイートの実行にのみ使用されます。

これは、ダンプサイズを小さくする必要があります多くの。十分でない場合は、書籍Pro Drupal Developmentの表を読んだり、.installファイルを読み飛ばしてモジュールのスキーマ定義を読むことができます。ほとんどの場合、実際のデータとなりますが、テスト間で元に戻す必要があります。

データベースの関係性のため、実行中の作業を正確に把握しておくか、残りのすべてのテーブルをまとめてダンプ/元に戻してください。