はじめに
robotframeworkでソケット通信を行う方法を調べていることがありました。
robotframeworkのライブラリにWebSocketClientというものが。
これはpythonのwebsocket-clientを元に作られているようです。
バージョンもしばらく更新されていなかったりと気になる点がありましたが、簡易的にソケット通信のテストに利用するだけだったので使うことに。
ソースコード&エラー
公式サイトにあるサンプルソースを動かそうとするとエラーが。
見れば分かるように公式サイトにあまり説明等有りません。
サンプルソースを元に127.0.0.1へ接続しようと一部変更を加えたものです。
*** Settings ***
Library WebSocketClient
*** Test Cases ***
Echo
${my_websocket}= WebSocketClient.Connect 127.0.0.1:4000
WebSocketClient.Send ${my_websocket} Hello
${result}= WebSocketClient.Recv ${my_websocket}
Should Be Equal Hello ${result}
WebSocketClient.Close ${my_websocket}
これを実行すると
PS C:\Users\***> cd C:\Users\***\Desktop\robotframework\socket
PS C:\Users\***\Desktop\robotframework\socket> robot .\socket_test.robot
==============================================================================
Socket Test
==============================================================================
Echo | FAIL |
ValueError: hostname is invalid
------------------------------------------------------------------------------
Socket Test | FAIL |
1 test, 0 passed, 1 failed
==============================================================================
Output: C:\Users\***\Desktop\robotframework\socket\output.xml
Log: C:\Users\***\Desktop\robotframework\socket\log.html
Report: C:\Users\***\Desktop\robotframework\socket\report.html
PS C:\Users\***\Desktop\robotframework\socket> robot .\socket_test.robot
とエラーになりました。
エラーメッセージを訳すと
「値のエラー:ホスト名が無効です」
となります。
原因&対処
原因はエラーメッセージの通りで、ホスト名の指定が間違っていたからです。
*** Settings ***
Library WebSocketClient
*** Test Cases ***
Echo
${my_websocket}= WebSocketClient.Connect ws://127.0.0.1:4000
WebSocketClient.Send ${my_websocket} Hello
${result}= WebSocketClient.Recv ${my_websocket}
Should Be Equal Hello ${result}
WebSocketClient.Close ${my_websocket}
URLにws://をつけることで通信が出来るようになりました。
さいごに
今回はrobotframeworkでwebsocketclientを使ったサンプルソースでのエラーについてでした。
正直どれだけの人がこのwebsocketclientをrobotframeworkで使っているのか分かりませんが、エラーと対処方法を共有しました。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。