質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

983閲覧

pythonでいうtest_clientとtest_request_contextの違いを理解するためにクライアントオブジェクトという単語について理解したい

sequelanonymous

総合スコア123

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

HTTPS

HTTPS(Hypertext Transfer Protocol Secure)はHypertext Transfer プロトコルとSSL/TLS プロトコルを組み合わせたものです。WebサーバとWebブラウザの間の通信を暗号化させて、通信経路上での盗聴や第三者によるなりすましを防止します。

HttpWebRequest

HttpWebRequestとは.NETにおけるクラスであり、WebRequestクラスをHTTPに導入するものです。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/09/19 01:14

編集2018/09/19 01:15

ここでいう(下記の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()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

1つめの記事で説明されているものは一般的なものではなく、Python共通のものでもなく、Flaskアプリをテストするために組み込まれたFlask独自の仕掛けです。

Webを経由せず、またユーザーの手作業を介さずにテストをするため、ネットワーク接続とUIを持たないWebブラウザを再現したもの、と思ってくださるのが早いと思います。
(とは言え、他のWebフレームワークでもそれぞれ似たような機構を持っていると思います)

テストコードでは、サーバのトップレベル(/)にアクセスして、下記を確認しています。

  • httpステータスが正常(200)
  • 返却されたデータが`Hello, World!'

サーバ側で作成したレスポンス(hello()returnされたもの)と同じならテストは成功。


他方、2つめの引用で書かれているのはWebに限らない、もっと抽象的、一般的な話のようです。
上の記事やサンプルとして示されているコードの解説に直接結びつけるのは難しいと思います。

投稿2018/09/24 13:47

morinatsu

総合スコア395

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問