はじめに
Robotframeworkでファイルの読み込み時にエラーが発生しました。
今回はその時のエラーの原因と対処方法についてです。
以下のソースは、エラーが発生した時の一部抜粋したものです。
分かりやすく不要な箇所は削除しています。
*** Settings ***
Library OperatingSystem
*** Variables ***
*** Keywords ***
*** Test Cases ***
エンコードを読み込む1
${read_file} = Get File テスト_sjis.txt
Log to Console ${read_file}
読み込もうとしたファイルです。
テスト_sjis.txt
テスト
エラー
表示されたエラーメッセージです。
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte
エラーメッセージにある様に文字コードによる問題です。
utf-8ではデコードが出来ませんよと書いてあります。
原因&対策
原因はファイル読み込み時のエンコード問題でした。
読み込むファイルがSJISだったのでUTF-8のrobotframeworkではエラーに。
対策としては、
- 読み込み元ファイルをutf-8に変更
- 読み込み時にエンコーディングを指定
することでエラーを回避出来ます。
エンコーディングを変更する場合は以下の様にファイルを変更します。
*** Settings ***
Library OperatingSystem
*** Variables ***
*** Keywords ***
*** Test Cases ***
エンコードを読み込む1
${read_file} = Get File テスト_sjis.txt encoding=sjis
Log to Console ${read_file
11行目、
encoding=sjis
として、エンコーディングを明示的に記しています。
これを実行すると
==============================================================================
エンコードを読み込む1 .テスト
エンコードを読み込む1 | PASS |
------------------------------------------------------------------------------
Robot Encode | PASS |
1 test, 1 passed, 0 failed
==============================================================================
とファイルの中身が読み込まれている事が確認出来ます。
さいごに
今回はrobotframeworkでのファイル読み込み時のエンコーディングエラーについてでした。
Pythonのファイル読み込みと同様、引数でencodingを指定する事でエラーを回避出来ます。
この記事がお役に立ったのならば嬉しいです。
最後までお読みいただきありがとうございました。