始めにpython3で実装すると、モックテストをしたくなります。モックを使って、比較的簡単にテストできるからです。問題はネットワーク系テストモックテストで問題になるのは、外部に依存するテストの場合です。ネットワークはテストする場所で決まってしまいます。APIの手法が使えないんですよね。mock.patchは「patchしたライブラリ」をテストしている感。xmlrpcライブラリ自体をmock.patchする方法もありますが、それをすると、ほぼ間違いなく、「mock.patchしたライブラリ」をテストすることになります。テスト用に作ったライブラリをテストするのは、本末転倒です。テスト用通信ライブラリということで、最近はVCR.pyを使っています。元々の出自はRubyのVCRライブラリだそうです。何をするライブラリかというと、アクセスした最初は、ネットワーク通信のデータをそのまま丸ごと、YAMLファイルに格納してくれます。同じURLであれば、格納したYAMLファイルを使用して、あたかもネットワーク通信しているかのように再現できます。YAMLファイルを使用している場合は、そのURLで実際にアクセスできる必要はありません。最初だけアクセスすればいいです。言葉で説明するより、実際に見たほうが早いです。以下で使用したコードはここにアップロードしてあります。今回はクライアント側のライブラリをテストする感じで、VCR.pyを使ってみます。構成的には以下のようになります。テスト用サーバ(server.py)テスト用サーバテスト用のサーパは以下です。server")server.serve_forever()以下のように起動します。tests/server/server.pyクライアントテスト対象のクライアントは以下です。proxy.time_result()単にXMLRPCを呼び出しているだけです。VCR.pyインストールpy.test経由で使用するので、以下をインストールします。--devテスト方法tests/test_client.pyは以下にします。None)重要なのは、以下の所です。TestXMLRPC_Client(VCRTestCase):@pytest.mark.vcr()VCRTestCaseをインポートして、テストクラスに継承します。実際にVCRを使用するところに@pytest.mark.vcr()のデコレーターを設定します。テストは以下で起動します。tests/test_client.pyまずは、テスト用サーバを起動せずに、テストを起動してみます。当然ながら、接続できないというエラーが出ます。refused起動してから、テストを起動すると成功します。============================================================================================一度成功すると、テスト用サーバを止めても、上記と同じく成功します。保存されたYAMLファイルtestsディレクトリにcassettesディレクトリが自動的に作成されます。tests/cassettes/TestXMLRPC_Client.test_client_time_result.yamlファイル名はテストコードの関数名でデータが作成されます。ファイル内容は以下のようになります。1この場合、時刻が固定されるので、その意味でテストはしやすいかもしれません。使った方が簡単だと思います。使い方のコツVCR.pyを使う場合は、まずはテストコードを成功させてしまう方がいいと思います。失敗するとデータが途中になってしまい、その次に成功させても、意味がなくなってしまいます。データの取り方を失敗した場合は、素直にYAMLファイルを消してからもう一度やったほうがいいようです。いうことで上記のテストコードでは、とりあえずテストを通してしまってます。本来なら、もうすこしテストを充実させてた方がいいでしょう。前回、AESで暗号化する実装をしてみた際、知らない暗号モードが増えたなと思いました。https://tech.nikkeibp.co.jp/atcl/nxt/column/18/00620/040900010/を見て書こうと思いました。...svelteをチュートリアルしてみる年末の休みは、svelteのチュートリアルをしてみました。なんとなくやはりそう?なので。Webアプリのフロントエンド(UI)用フレームワークです。Pythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムの続きです。...PREVPythonのmock.patchを使ってみるNEXT横浜カジノに反対する会(仮)に行ってきた。