ここでいう(下記の1つ目の引用文章で使われているクライアントオブジェクトについて)、クライアントオブジェクトの意味とはなんでしょうか?
私が今まで調べて確認した限り、test_clientとtest_request_contextの違いは、クライアントオブジェクトの扱い方が違うと推測していますが、そもそも、クライアントオブジェクトの意味がわからず、違いが明確にわかりません。
下記のコードについて以下のコメントがされています。(引用元:http://momijiame.tumblr.com/post/39324429279/python-%E3%81%AE-flask-%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E3%83%86%E3%82%B9%E3%83%88%E3%81%99%E3%82%8B)
Flask で作ったアプリケーションのオブジェクト (上記では app) の test_client() メソッドでテスト用のクライアントオブジェクトが得られる。 クライアントオブジェクトは実際の HTTP リクエストは発生しないものの HTTP クライアントとして動作するので、これでテストしたいリクエストをしてレスポンスを検証する。
他の書籍でも以下のように引用されています。「実践ドメイン駆動設計」
デメルテの法則:この指針は、最小知識の原則を強調するものだ。クライアントオブジェクトとオブジェクト(仮にサーバーとする)があり、クライアントオブジェクトがサーバーオブジェクトを使って何らかの振る舞いを実行するものとする。クライアントオブジェクトがサーバーオブジェクトを使う時に、サーバーの構造に関して必要以上に知りすぎてはいけない。サーバーの属性やプロパティなどは、見えないようにしておくべきだ。
python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4from flask import Flask 5 6app = Flask(__name__) 7 8 9@app.route('/', methods=['GET']) 10def hello(): 11 return 'Hello, World!', 200 12 13if __name__ == '__main__': 14 app.run(debug=True)
下記、テストコード
python
1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4import unittest 5 6import flaskhello 7 8 9class TestFlaskHello(unittest.TestCase): 10 11 def setUp(self): 12 self.app = flaskhello.app.test_client() 13 14 def test_get(self): 15 response = self.app.get('/') 16 assert response.status_code == 200 17 assert response.data == 'Hello, World!' 18 19 20if __name__ == '__main__': 21 unittest.main()
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。