Python インターフェイスの自動テスト

コースアドレス

リクエスト

requests.post() データと json の違い

postdata = {
    
    'jobId': '1',
            'jobType': 'predict',
            'targetClass': 'vm',
            'targetId': 123}
requests.post('http://127.0.0.1:5000/api/getPredictInfo', json=postdata,
                          headers={
    
    'Content-Type': 'application/json'})
或者
requests.post('http://127.0.0.1:5000/api/getPredictInfo', data=json.dunps(postdata))    

データ パラメーターはフォーム パラメーターを意味します。デフォルトの要求ヘッダーは Content-Type: application/x-www-formurlencoded、要求パラメーターの形式: (k1=v1&k2=v2)、パラメーターは純粋なキーと値のペアの辞書です。など:
{key1:value1,key2:value2}
データ パラメータはテキスト パラメータを意味します: デフォルトのリクエスト ヘッダー: text/plain。パラメータ: str 型
json pass パラメータは json pass パラメータを意味します: デフォルトのリクエストヘッダー: application/json, パラメータは dict 型
json はキーと値のペアとリストを含む Dict 型です

ファイルのアップロード

postdata = {
    
    'midea':open('./test.jpg',"rb")}
requests.post('http://127.0.0.1:5000/api/getPredictInfo', files=postdata)

クッキーでテスト

rep= requests.get()
通过get请求获取到登陆的token,然后登陆测试
headers = {
    
    "Accept":"aplication/json,text/javascript,*/*;q=0.01",
			"X-Requested-With":"XMLHttpRequest"}
rep = requests.post(url,data=data,headers=headers,cookies=rep.cookies)

同じセッションで複数のリクエスト テストを完了する

requests.post上記などをrequests.get次のように置き換えることができます

requests.session().request("post",xxx)
requests.session().request("get",xxx)

この統一requests.postされたインターフェースはrequests.request()

パイテスト

1. モジュール名は test_ または _test で始める必要があります
2. テスト クラスは Test で始める必要があり、init メソッドを持つことはできません
3. テスト メソッドは test_ で始める必要があります
4. Pytest には多くの強力なプラグインがあります。pip installインストール

pytest-html 簡単なレポートを生成する
pytest-xdist マルチスレッド
pytest-orderding テスト ケースの実行順序を制御する
pytest-rerunfailures 失敗したケースを再実行する
pytest-base-url ベース パスの設定
allure-pytest 魅力的なレポートを生成する

コマンドライン

pytest -vs
pytest -k “add” 执行所有测试用例名中含有“add”的用例
pytest - s 打印测试用例中print语句
pytest -v 增加打印细节
pytest - x 一旦发现失败用例,停止运行
pytest -maxfail=2 当测试遇到两条失败,立刻停止运行
pytest -m “标签名” 给测试用例加标签
pytest -n 多线程(需要安装pytest-xdist)
pytest --reruns=2 失败用例重跑2次
pytest --html='./report.html' 生成简易报告

構成ファイル

注:
1. コマンド ラインでもメイン関数でも、この構成ファイルは自動的に読み込まれます
2.pytest.iniファイルは pytest のデフォルトのテスト ケース ルールを変更できます
3. このファイルは通常、プロジェクトのルート ディレクトリに配置されます

[pytest]
#配置参数
addopts = ‐vs
#配置测试用例文件夹
testpaths = ./testcases
#配置测试模块的规则
python_files = test_*.py
#配置测试类的规则
python_classes = Test*
#配置测试方法的规则
python_functions = test_*
#配置接口测试的基础路径
base_url = http://127.0.0.1/
#给用例分组
markers =
smoke:冒烟测试
usermanage:用户管理

Smoke とユーザー管理では、ユース ケースにデコレーターを追加する必要があります。

@pytest.mark.smoke
@pytest.mark.usermanage

実行するときは、次を使用する必要があります。

-m 分组名 or 分组名

Pytest テスト ケースのデフォルトの実行順序は上から下ですが、
次のタグを使用してテスト ケースの実行順序を変更できます。@pytest.mark.run(order=1)

パイテストの前提条件

すべてのクラスの前後、すべてのユースケース

def setup_class(self):
	print("在类之前的操作")
	
def teardown_class(self):
	print("在类之后的操作")
	
def setup(self):
	print("在所有用例之前的前置操作")

def teardown(self):
	print("在所有用例之后的后置操作")

いくつかのユースケースの前または後に実行したい。Fixture
Fixture デコレータを使用した完全な構造は次のとおりです。

@pytest.fixture(scope="作用域",autouser="自动执行",params="数据驱
动",ids="参数别名",name="fixture别名")

scope: フィクスチャの範囲をマークします

  • function: 機能レベル (手動または自動)
  • class: クラスレベル (通常は自動)
  • module: モジュール レベル (通常は自動)
  • package/session:session レベル (通常は自動): 明日のフレームワークの使用をカプセル化します。

autouser=True
paramsフィクスチャのデータ駆動型表現のエイリアスを自動的に実装します
name。エイリアスを使用してエイリアスを作成すると、フィクスチャの元の名前は無効になります。

前述のユース ケースの一部であるテスト ケースは、先行する関数の関数名を直接渡します。

import pytest

# 部分测试用例前置
@pytest.fixture()
def conn_database():
    print("连接数据")
    yield
    print("关闭")


class TestALL:

    def test_A(self):
        print("test A")

    def test_B(self,conn_database):
        print("test B")

    def test_C(self):
        print("test C")

if __name__ == '__main__':
    pytest.main(['-vs'])

最適化
通常、フィクスチャは conftest.py ファイルと一緒に使用されます。

conftest.py是专门用于存放fixture的,是固定名称
conftest.py文件的方法使用时不需要导包
conftest.py文件可以有多个

上記の conn_database 関数を、新しく作成された conftest.py ファイルに入れます

@pytest.fixture(scope="session",autouse=True)
def claer_yaml():
    YamlUtil().clear_yaml()

claer_yaml関数は自動的に実行され、パラメーターとして渡す必要はありません

魅力レポートを作成する

1.ダウンロードしてインストールします
2. pip install allure-pytest
3. addopts = ‐vs --allurdir ./temp# 生成された json ファイルのパスを保存します
4. json を使用してレポートを生成しos.system("allure generate temp -o report")、レポート ディレクトリに生成します

データ駆動型テスト

import pytest
class TestApi:
    @pytest.mark.parametrize("args",["a","b","c"])
    def test_api(self,args):
        print(args)

if __name__ == '__main__':
    pytest.main(['test_2.py'])

郵便屋さん

インターフェイスの関連付け

ここに画像の説明を挿入
他のインターフェイスは、次のように、上記のインターフェイスの戻り値を使用する必要があります。
ここに画像の説明を挿入

コンテキスト切り替え

ここに画像の説明を挿入
ここに画像の説明を挿入

動的パラメーターの受け渡し

{ {$timestamp}}現在の時刻のタイムスタンプを生成する
{ {$randomInt}}0 ~ 1000 の乱数を生成する (ほとんど使用されない)
{ {$guid}}省略形の GUID 文字列を生成する

カスタム動的パラメータを
ここに画像の説明を挿入
リクエストするときは、{ {time}}参照を渡します
ここに画像の説明を挿入

業務クローズドループ(追加、削除、修正、確認)

グローバル変数を使用してから、グローバル変数への直接参照を削除、変更、およびチェックする
ここに画像の説明を挿入

断言

Pre-request-Scriptモジュール
ここに画像の説明を挿入

状態アサーション

ここに画像の説明を挿入

ビジネスアサーション

ここに画像の説明を挿入

テスト タブでは、 グローバル変数は { {}} で取得できませんが、以下の方法でのみ取得できます
ここに画像の説明を挿入
ここに画像の説明を挿入
. まったく同じアサーションを、各スクリプトで繰り返すことなく、グローバル アサーションとして使用できます
ここに画像の説明を挿入
ここに画像の説明を挿入

ファイルのアップロード

ここに画像の説明を挿入

バッチ テスト

一度に複数のスクリプトをテストする
ここに画像の説明を挿入
ここに画像の説明を挿入

ファイル アップロード バッチ テスト インターフェース エラー

Postman ソフトウェアの変更設定
Settings-> General-> Location
1、開くAllow reading files outside working drectory
2、アップロードしてテストするファイルをデフォルト ディレクトリにコピーします (postman はデフォルト ディレクトリのファイルを読み取ります)。

データ駆動型テスト

一般に、CSV ファイルまたは JSON ファイルを
ここに画像の説明を挿入
バッチ テストした場合、返される結果が同じである場合は、以前にパラメーター値が完全に書き込まれている可能性があり、値をParams取得するために変更する必要があります
ここに画像の説明を挿入
ファイル内の変数の数であり、その値はdata.变量名以前のものではありません。global.

リクエストヘッダーでテスト

パケット キャプチャ ツールTelerik Fiddlerを使用する必要があります

ここに画像の説明を挿入
にコピーHeaders、一部のアドレス、不要な情報を削除

クッキー認証テスト

Cookie とは、クライアントが初めてサーバーにリクエストを送信するときに生成される小さなテキスト情報で、最初のリクエストに含まれクライアント
返され、その後のリクエストに含まれます。请求头没有Cookie响应头set-cookie生成Cookie请求头Cookie

郵便配達員は自動的にクッキーを保存します

Postman のモック サーバー サーバー

使用シナリオ: フロントエンドとバックエンドが分離されており、バックエンド インターフェースは完成していないが、フロントエンドは完成しており、フロントエンド ビジネス プロセスはバックエンド インターフェースに依存している

ここに画像の説明を挿入
フロントエンドをテストするために自分でバックエンド インターフェイスを作成するのと同じであり、返される情報をカスタマイズできます。

インターフェイス テストの暗号化と復号化

暗号化と復号化のテスト Web サイト
Pre-Script-Requestドキュメントを暗号化するコードを記述し、それをグローバル変数テストとして設定する

ニューマン

どこにでもある postman のテストケース、グローバル変数、環境変数、データファイル
ここに画像の説明を挿入
NewMan インストール

newman run 接口脚本.json -e 环境变量.json -r html --reporter-html-export test.html

詳細パラメータ

ロボットフレーム作業

ロボット フレームワークをインストールする

pip install robotframework

GUI インターフェイスをインストールする

pip install –i https://pypi.douban.com/simple robotframework-ride

カスタム キーワード

ここに画像の説明を挿入
ここに画像の説明を挿入
新しく作成されたファイルを右クリックします。
ここに画像の説明を挿入
新しく作成されたファイルはまだ使用できず、リソース ファイルをスイートにインポートする必要があります。
ここに画像の説明を挿入

共通図書館

拡張ライブラリ
1) Web 自動化ライブラリ –Selenium

pip install –i https://pypi.douban.com/simple robotframework- seleniumlibrary

2) API 自動化ライブラリ –requests

pip install -i https://pypi.python.org/pypi/robotframework-requests

3) アプリ自動ライブラリ

pip install robotframework-AppiumLibrary 

おすすめ

転載: blog.csdn.net/weixin_44831720/article/details/124733774