最近のログインインターフェイステストで、次のシナリオが発見されました。今回は、発生した問題と解決プロセスを記録します。
1.パケットキャプチャでログイン操作が見つかると、3つのインターフェイスが連続して要求され、各インターフェイスが関連付けられます
2. Cookie情報は、リクエストごとに保持する必要があり、次のインターフェースリクエストで必要になります
3.各インターフェースから返されるデータはjson形式ではなく、データを抽出するには追加の操作が必要です
このドキュメントは、これらの3つのポイントから始まります
1.最初にパケットキャプチャと一般的なフレームワーク分析の状況を見てください
3つのインターフェースをリクエストしてから、1つずつ分析します
①全体として、それらはすべてgetリクエストであり、共通のパラメータはservice、callback、および_です。第2条と第3条には他のパラメータがあります。
②最初のインターフェースから返されるデータのデータの下にある2つのフィールドは、2番目のインターフェースのパラメーターです。
③2番目のインターフェースから返されるデータの特定のフィールドは3番目のインターフェースのパラメータです
上記に基づいて大まかなフレームワークを書く
#coding:utf-8
import requests,re
url = "xxxxx"
#tt就代替那个_作为参数了
def login1(service,callback,tt):
pass
#三条接口相互依赖,第2个接口参数来源第1个接口返回值
def login2():
pass
#三条接口相互依赖,第3个接口参数来源第2个接口返回值
def login3():
pass
if __name__ == '__main__':
service = 'xxxxxx'
callback = 'xxxxxxx'
tt = 'xxxxxxx'
login3(service, callback, tt)
2.次に、getリクエストを作成するのが普通です。
ここでの戻り値はjson形式ではないため、このようにjson.loads()を記述する必要はありません。最初に出力して表示します。
3.上記のように、ここでのltと実行は次のインターフェースのパラメーターであるため、この時点でそれらの値を抽出する必要があります
これには定期的な抽出が含まれます
ps:デバッグWebサイトhttp://tools.jb51.net/regex/javascriptを推奨します
Python正規表現学習アドレス:https://www.jb51.net/article/177521.htm
ここにPythonで書くのも簡単です。詳細については、以下のスクリプトの注釈を参照してください。
def login1(service,callback,tt):
print("开始执行login1")
url = url1 + "/sso/login"
params = {
"service":service,
"callback":callback,
"_":tt
}
req = requests.get(url = url,params=params)
print(req.text)
#返回结果转换为字符串
response_str = str(req.text)
#正则提取字符串信息,返回列表,提取data下的信息
m = re.findall(r'{.*?}',response_str)[0]
#data下就是key-value形式,通过eval()将字符串转换为字典,然后字典中通过key提取到value值
lt = eval(m)['lt']
execution = eval(m)['execution']
return lt,execution
4. 2番目のインターフェースを作成し、最初のインターフェースから返されたものを取り込みます
def login2(service,callback,tt):
lt,execution = login1(service,callback,tt)
print("开始执行login2")
実行中に302エラーが見つかりました
302エラー:リダイレクト、一時的な転送を表します。これは、URL aにアクセスしたことを意味しますが、サーバー側のインターセプターまたはその他のコード処理のために、URLbにリダイレクトされます。
リクエストを使用してログインをシミュレートする場合、request.get(url)を直接使用すると、302リダイレクトが簡単に発生する可能性があります。理由はCookieが永続的ではないためです(リクエストにはCookie処理が付属していますが、永続的ではありません)
したがって、ここではCookieを保存して使用する必要があります
特定のCookieの使用法については、パスを参照してください:https://www.cnblogs.com/liuzhzhao/p/12114453.html
5.使い方を知っているので、コードを変更しましょう
次のスクリプトはひょうたんのようなもので、最初のインターフェイスのCookie情報が2番目のインターフェイス用に保存され、2番目のインターフェイスのCookieが3番目のインターフェイス用に保存されます。
全体として完成しており、後で個別に補足する必要があります。
今回の主な知識ポイント:インターフェースの依存関係の呼び出し、Cookieの保存と使用、Pythonキー情報の定期的な抽出
最後に:テスターのメリット
テクノロジー業界では、技術スキルを向上させ、自動化プロジェクトでの実践的な経験を充実させる必要があります。これは、今後数年間のキャリア計画とテストテクノロジーの深さに非常に役立ちます。
ゴールデン9日とシルバー10日の面接シーズン、転職シーズンでは、面接の質問を整理することが長年の私の習慣になっています!以下は、近年の私のコレクションと並べ替えです。全体は[ソフトウェアテスト]を中心に構成されています。メインコンテンツには、Python自動化テストの独占ビデオ、Python自動化の詳細、インタビューの質問のフルセット、その他の知識コンテンツが含まれます。
8kの給料を受け取ることを恥じないでください。また、20Kを超える給料を受け取ったからといって自己満足しないでください。また、30〜45を受け取ったからといって自己満足しないでください。人生はそのわずかな給料を稼ぐことではありません、あなたが必要とするのはキャリアを開くことです。
あなたと私が会い、あなたが何かを見つけることができますように!WeChatパブリックアカウントをフォローすることを歓迎します:[Sad Spicy Article] 216ページのソフトウェアテストエンジニアのインタビューブックを無料で受け取ります。そして、対応するビデオ学習チュートリアルは無料で共有できます!