小結WEBインタフェーステスト
最近、インタフェースのテストの更新をしています.中には新しいテストがたくさん追加されています.2週間連続残業しています.ここでまとめます.
被験デバイス紹介:これはあるスマートデバイスに対するWEB APIのテストであり、デバイス内でOpenWRTシステムを実行し、内部では一連のノードを使用して多くのデバイス情報と配置情報を記録し、デバイスもWEB GUIページを提供し、そのホームページを開くことで配置することができ、WEBインタフェースAPIも提供している.リモート設定機能を実現する(実はWEB GUIページに呼び出す)
テストフレームワークの紹介:テストはpythonで実現され、主にユニットテストフレームワークpytest、HTTPライブラリrequests、ssh接続用pamamikoが使用されている.
作業背景:今回の作業の前に、このインタフェーステストは基本的に成形され、しばらく実行されましたが、最近はお客様の要求に応じて、setテストを追加しました.既存のテストの多くはgetテストであり、cgiに似たものを使用していると理解できますか?get=wifi_statusのようなqueryは、WEBのresponse、すなわちjson列を取得し、デバイス上のWi-Fiの具体的な情報の値を解析し続け、これらの値について検証する(sshログインでデバイスがshellコマンドを呼び出して取得した情報と比較する).
反省する設計テストの後、簡単な一挙手一投足と当たり前のことを考えていたので、時間を無駄にしました.テストで取得した情報には、getリクエストをデバイスに送信すると、json列付きresponseが受信され、json列で返される情報がAPIドキュメントで認められます.二つ目は、デバイスにsetリクエスト(確かにPOSTではなくGETリクエストを送信するように設計されている.すなわち、&act=set&service=wifi&enabled=0のような情報を含むGETリクエストを送信する)しても、json列付きresponseが受信され、返される情報を解析することができる.そして私は最初、ここでjson列の情報は検証結果に利用できると勘違いしていましたが、実際にはAPIドキュメントには言及されていません.ここでは完全に私の考えを事前に検証していないと思っていた結果、無駄に時間を浪費して、回り道をしました. 加setテストの时、私は基本的に一気にcodeが终わって、后で证明して、やはり1つの后で、方法を考えて地元で走って、この部分に熟知している同僚と简単な审査をして、私の理解がみんなと一致していることを确保して、それから彼の部分を続けます. フォーマットが良好で、読みやすいlog印刷は、失敗したテストを迅速に位置決めし、テストが実行されたときに何が起こったのかを知るのに役立ちます.この点はとても重要で、このインタフェースのテストも実は私が維持した(分析に失敗したテスト、バグを報告したり、テストコードを更新したりした)、以前私はlog印刷を追加しました.例えば、この関数Util.printQueryAndJson()は、requestリクエストを送信した後、この関数を実行して、送信したばかりのrequestリクエストのquery文字列と、返されたresponseのjson列を印刷することを意味します.ここで私はエラーを犯しました.setリクエストが返すjson列はgetリクエストが戻ってくるjsonと同じように、検証に持って来ることができますが、実際にはそうではありません.
次に、テストコードを再構築する際に使用されるpythonコードの1つです.関数の内部関数特性を使用します.閉パッケージとも呼ばれます.
実行結果は
被験デバイス紹介:これはあるスマートデバイスに対するWEB APIのテストであり、デバイス内でOpenWRTシステムを実行し、内部では一連のノードを使用して多くのデバイス情報と配置情報を記録し、デバイスもWEB GUIページを提供し、そのホームページを開くことで配置することができ、WEBインタフェースAPIも提供している.リモート設定機能を実現する(実はWEB GUIページに呼び出す)
テストフレームワークの紹介:テストはpythonで実現され、主にユニットテストフレームワークpytest、HTTPライブラリrequests、ssh接続用pamamikoが使用されている.
作業背景:今回の作業の前に、このインタフェーステストは基本的に成形され、しばらく実行されましたが、最近はお客様の要求に応じて、setテストを追加しました.既存のテストの多くはgetテストであり、cgiに似たものを使用していると理解できますか?get=wifi_statusのようなqueryは、WEBのresponse、すなわちjson列を取得し、デバイス上のWi-Fiの具体的な情報の値を解析し続け、これらの値について検証する(sshログインでデバイスがshellコマンドを呼び出して取得した情報と比較する).
反省する
次に、テストコードを再構築する際に使用されるpythonコードの1つです.関数の内部関数特性を使用します.閉パッケージとも呼ばれます.
#!/usr/bin/env python
def run():
a = {"name":"Li Ming", "age":23}
def inner_func():
a.clear()# python a, !
a.update({"language":"python"})
inner_func()
print(a)
def new_inner_func():
a = {"language":"java"} # a,
new_inner_func()
print(a)
run()
実行結果は
{'language': 'python'}
{'language': 'python'}