LoginSignup
3
0

More than 5 years have passed since last update.

Pythonのpandasで加工したファイルのユニットテスト 例

Posted at

概要

  • 医薬品副作用データベースから取得したCSVファイルを使いpandasを用いたCSVの操作、その結果のユニットテスト用に作成
    • 医薬品、有害事象単位で症例をユニークにしたレコードを作成する。
    • 医薬品ごとに有害事象の件数を計算できるようにしたレコードを作成する。
  • 作成した結果をユニットテストで確認できるようテストクラスも配置
  • ソースはgithubにて公開

使い方

  1. データをこちらから取得
    • ファイルサイズが大きいためgithubには加工したファイルをコミットしている
  2. data/drug.csvに医薬品の情報(drugXXXXXX.csvをリネームする)を格納する。
  3. data/reac.csvに有害事象の情報(reacXXXXXX.csvをリネームする)を格納する。
  4. 実行するとoutput下に出力される。
    1. caseCount.csv は医薬品、有害事象の組み合わせで症例単位でまとめたもの例数計上用に重複を削除している。
    2. count.csv は医薬品、有害事象の組み合わせで症例単位でまとめたもの件数を数えるために重複もそのままにしてある。

ユニットテスト

  1. テスト用のデータはtest下の同じ構成に配置している。
  2. 現在の状態でテスト結果は一致するようにしている変更があった時には結果ファイルを必要に応じて修正を行う

ソース説明

  • CreateFileBaseを継承したクラス内で処理を行うことで単体テストの結果比較を容易にしている。
  • 各ファイルは識別番号.報告回数で結合できるようになっているのでまずは結合を行い必要な項目のみ出力している。
  • FileTestBaseunittest.TestCase を継承しているのでこのクラスで比較処理は行うようにして呼び出し元はあくまでテスト対象の実行、結果の受け渡しのみを行う
  • 今回はエクセルの対象は作っていないがcsvと同じ要領でエクセルの比較もできる
    • pandasを使ってエクセルファイルを加工するツールを作った際のテストなどに流用もできるはず・・・

応用

  • 結果ディレクトリをテストケースごとに変えることでテストのパターンを網羅するできる
  • 今後必要に応じて基底クラス部分は修正予定
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0