2017-09-06 5 views
2

私はメソッドの単体テストを書く - DataFramesを操作することが多い。Pythonでのユニットテスト - テスト内でデータフレームを作成する

私のデータはAPI呼び出しから来ており、テスト内でAPI呼び出しを使用するという罠に陥っています。API呼び出しに問題がある可能性があるため、特定のコンポーネントを正確にテストしていないようです。

各テストでダミーデータフレームを作成し、API呼び出しが予想される形式のDataFramesを返すことを個別にテストする方が良いでしょうか?

DataFramesを手動で作成するのは苦痛です。アクティブなコンソールのDataFrameオブジェクトを構築するために必要なコード文字列に変換できるユーティリティはありますか?

pd.DataFrame.from_csv('my_data.csv') 

「あなたについて:

df.to_csv('my_data.csv') 

そしてもちろん、それを再ロード:

答えて

1

あなたはいつも(pickleのようなおよびその他の形式)CSVファイルへDataFrameを保存することができますテストデータ ":

質問はいつも何だの機能をテストします。私にとっては、あなたのAPIではなく、特定の結果のための特定のルーチンの実装をテストしたいのと同じように思えます。 APIをテストするつもりはないので、スクラップし、必要でない場合は使用しないでください。

もし私のAPIからデータを取得し、それを私の「テストデータ」として保存し、私のユニットテストに使用するスクリプト/プログラムを書いてみると、テストデータをすぐに生成できるのでなければ(かなりの時間)、それを実行することもできます。

+0

を使用することができます良いアイデアです。この場合はおそらく最も適切な解決法です。ありがとう – AndyMoore

1
import pandas as pd, numpy as np 

np.random.seed([3,1415]) 
df = pd.DataFrame(np.random.randint(10, size=(3, 5)), columns=list('ABCDE')) 

df 

    A B C D E 
0 0 2 7 3 8 
1 7 0 6 8 6 
2 0 2 0 4 9 

その後、APIからデータを保存to_jsonread_json

pd.read_json(df.to_json()) 

    A B C D E 
0 0 2 7 3 8 
1 7 0 6 8 6 
2 0 2 0 4 9 
+0

あなたは良い点を確認します。実際に私が主にデータの相反する関数をテストしているので、ランダムにテストを書くことができます。ありがとう! – AndyMoore

+0

私の単体テストで乱数ジェネレータを使い始めました - チップのおかげで一般的に良い哲学だと思います – AndyMoore

関連する問題