Flask ベースの自動テスト

1.はじめに

 

        Flask は Python 言語で記述された軽量の Web フレームワークであり、インターフェイスの自動化テストを簡単に実現できます。テストにはサードパーティのインターフェイスが必要になる場合がありますが、サードパーティのインターフェイスが提供されていない場合は、モック インターフェイス。

2. インストール

        フラスコのインストールは、python が提供するパッケージ インストール ツール pip を使用して簡単に実行でき、
        コマンド ウィンドウを正常にインストールできます。 

3. コアモジュールの紹介

        フラスコ.フラスコ: フラスコは、パッケージ化された wsgi アプリケーションを構築できます.
        フラスコ.フラスコ.ルート(パス): パス パスとビュー関数
        フラスコ .Flask.run(): Web アプリケーションを Web サーバーにデプロイし、run() 関数を使用してサービスを開始します。

4. プロジェクトの構築

        プロフェッショナル バージョンの pycharm にはフラスコ プロジェクトの作成がありますが、無料のコミュニティ バージョンでは手動でディレクトリを作成して構成する必要があります。

        ステップ 1: ファイル -> プロジェクトの作成、名前はオプションです: testFlask
        ステップ 2: Flask ライブラリをインポートします; ファイル-「デフォルト設定」-「プロジェクト インタープリター」
        ステップ 3: プロジェクト ファイルを構成します; ディレクトリで static という名前の python パッケージを作成します; static css、image、js などの静的ファイル リソースを格納するフォルダーです。
        手順 4: HTML ファイルを格納するテンプレート フォルダーを作成する
        

        この時点で、基本的な設定は完了です; 実行するコードを書きます:
        最初に: テンプレートに index.html ファイルを作成し、hello world を書きます!


<!DOCTYPE html>
<html lang="en">
<body>
    <h1>hello world!</h1>
</body>
</html>

        次に: プロジェクトのルート ディレクトリに app.py ファイルを作成します。 
                      

        app.py のコード:
 

from flask import Flask,render_template
from flask import  jsonify

#指定templates的路径,因为templates 和 app.py文件不在同一目录;所以要指定
app = Flask(__name__,template_folder = '../templates')

#静态路由:构建url与函数的映射关系;
@app.route("/")
def index():
#    return render_template('index.html')
#    return  'hi hello world!'
    #返回json数据,需要提前导入jsonify模块
    return jsonify({'code':200,'messages':'success!'})

users_info = {'1001':['123456','zhangsan'],'1002':['123456','lisi']}

@app.route('/users',methods=['GET'])
def users():
    return users

#动态路由,可以传入不同数据;methods可以不写,默认是GET方法,users带参数;构建url与函数的映射关系;
@app.route('/users/<string:account>',methods=['GET'])
def get_user(account):
    if account in users_info:
        info = users_info[account]
        return f'你好 {info} !'
    else:
        return '用户不存在!'

#动态路由,构建url与函数的映射关系;

if __name__ == '__main__':
    #用默认的方式运行
    app.run(debug=True)
    #以调试模式启动项目
    #app.run(host='0.0.0.0’,port=5000,debug=True)  
    #host='0.0.0.0’,表示可以使用127.0.0.1、1ocahost、ip地址访问接口

5. リクエストデータを取得する

        リクエスト モジュールをインポートします。注: これは、リクエスト モジュールではなく、フラスコのリクエスト モジュールです。
        from Flask import request

        の一般的なメソッド:
        method: クライアントがリクエストを送信するためのメソッドを取得する;
        header: リクエスト ヘッダーを取得する
        cookies: Cookie を取得する
        args: GET リクエスト フォームのデータを取得する: POST リクエストの         値
        のデータを取得する
: POST

リクエスト サーバー セッション ホールドによって送信されたデータを取得します。

        セッションを維持するには、Cookie またはセッションを使用します。

        cookie: make_response モジュールを使用して
        応答オブジェクトを作成します: resp = make_response()
        で Cookie を設定します: resp.set_cookie(key, value, max_age) キーと値のペアを介してパラメーターを渡し、ライフサイクルを設定して
        Cookie を取得します: request .cookies.get(key)
        Cookie の削除: request.delete_cookie(key)

        session: session モジュールを使用して
        秘密鍵を設定します: secret_key
        セッションを設定します: session[key] = value
        セッションを取得します: session.get(key)
        セッションを削除します: session.pop(key)

from flask import Flask,render_template
from flask import make_response
from flask import jsonify
from flask import session
from flask import request

#指定templates的路径,因为templates 和 app.py文件不在同一目录;所以要指定
app = Flask(__name__,template_folder = '../templates')

#设置秘钥,用于session信息加密
app.secret_key='123'

#静态路由:构建url与函数的映射关系;
@app.route("/")
def index():
#    return render_template('index.html')
#    return  'hi hello world!'
    #返回json数据,需要提前导入jsonify模块
    return jsonify({'code':200,'messages':'success!'})

users_info = {'1001':['123456','zhangsan'],'1002':['123456','lisi']}

@app.route('/users',methods=['GET'])
def users():
    return users

#动态路由,可以传入不同数据;methods可以不写,默认是GET方法,users带参数;构建url与函数的映射关系;
@app.route('/users/<string:account>',methods=['GET'])
def get_user(account):
    if account in users_info:
        info = users_info[account]
        return f'你好 {info} !'
    else:
        return '用户不存在!'

#动态路由,构建url与函数的映射关系;不需要传参数,可以通过args方法获取
@app.route('/login2',methods=['GET'])
def login2():
    #获取客户端请求过来的login2接口的account参数
    account = request.args.get('account')
    if account in users_info:
        #登陆成功,用cookie、或session保存信息
        resp = make_response()
        #设置 user的cookie信息
        resp.set_cookie('user',account,max_age=100)

        #保存session信息;
        session['acc'] = account
        return jsonify({'code': 200, 'messages': 'success!'})
    else:
        return jsonify({'code': 2222, 'messages': 'can not find user!'})


#获取用户信息,获取前先登录,校验cookie是否存在
@app.route('/getuser',methods=['GET'])
@def getuser():
    #获取user的用户信息
    userCookie = request.cookies.get('user')
    userSession = session.get('acc')
    if userCookie:
        #成功获取user信息
        return jsonify({'code': 200, 'messages': 'success!'})
    else:
        return jsonify({'code': 2222, 'messages': 'can not find user!'})

if __name__ == '__main__':
    app.run(debug=True)


 

おすすめ

転載: blog.csdn.net/guanrongl/article/details/124976290