はじめに
robotframeworkでファイルの比較を行いたい事がありました。
(テストなどでログを残してその結果を比較する)
その時に調べた時のメモになります。
サンプルプログラム
ファイルを読み込み、内容を変数に保存してそれを比較するというシンプルなプログラムです。
直接の比較するという関数やライブラリは調べたところなさそうでした。
そのためShould Beなどを用いて比較するようにしています。
*** Settings ***
Library OperatingSystem
*** Variables ***
*** Keywords ***
*** Test Cases ***
ファイルを読み込む1
${read_file_1} = Get File test1.txt
${read_file_2} = Get File test2.txt
Should Be Equal ${read_file_1} ${read_file_2}
ファイルを読み込む2
${read_file_1} = Get File test1.txt
${read_file_2} = Get File test3.txt
Should Be Equal ${read_file_1} ${read_file_2}
比較するファイルは3つです。
test1.txt
テスト1
テスト2
test2.txt
テスト1
テスト2
test3.txt
テスト1
テスト2
テスト3
これを実行すると、
==============================================================================
Compare File
==============================================================================
ファイルを読み込む1 | PASS |
------------------------------------------------------------------------------
ファイルを読み込む2 | FAIL |
テスト1
テスト2 != テスト1
テスト2
テスト3
------------------------------------------------------------------------------
Compare File | FAIL |
2 tests, 1 passed, 1 failed
==============================================================================
という風に表示されます。
当たり前ですが、test1.txtとtest3.txtは内容が異なるのでエラーとなります。
今回の例は単純な比較となっていますが、時間などが表示されるログではそのまま比較するとエラーになります(同じログ出力でも時間で×となる事があり単純比較できない時もあり)
比較は一部の文字列を検索して、別のファイルでもその文字が含まれるかという様にちょっと工夫しないといけないと思います。
さいごに
今回はrobotframeworkでのファイル比較についてでした。
ファイルの比較自体は簡単ですが、比較方法は工夫が必要ですね。
(ログが多いと、完全一致は難しい)
この記事がお役に立ったのならば嬉しいです。
最後までお読みいただきありがとうございました。