WeChat アプレットの自動テスト - Devops プロセスを完了する

ミニ プログラム クラウド テスト サービスは、次のような豊富な自動テスト機能とパフォーマンス テスト機能を提供します。

詳しくはミニプログラム クラウドテストコラムをご覧ください。

テストを送信する場合、ユーザーは通常、開発者ツールでクラウド テスト プラグインを開いた後、タスクを手動で送信する必要があります。ここにいる一部のユーザーは、テストを自動的に送信し、テスト機能をチーム内の DevOps プロセスに統合し、コード送信後にタイミングまたは自動トリガーを実現できることを望んでいます。

クラウド テスト プラグインに新しいサードパーティ インターフェイス機能が追加されました。この機能は、https インターフェイスを直接呼び出してテストする方法をサポートします。これは、ユーザーがクラウド テスト機能を DevOps プロセスに統合するのに便利です。詳細なドキュメントについては、サードパーティ インターフェイスの紹介を参照してください。具体的には:

  1. インターフェースを再度使用して、提交测试任务タスクを送信する必要があるときにタスクを自動的に送信できます。たとえば、Crontab または Jenkins を組み合わせて、テスト タスクの定期的なサブミットを実装し、毎日のビルドを実行します。
  2. 查询任务状态インターフェイスを使用して、タスクが終了したかどうかを定期的にポーリングします
  3. タスクが終了したら、获取报告分享链接インターフェイス。他の学生はリンクを開いてレポートを直接表示できます

レポートで共有されたリンクは 30 日間有効です。さらに、リンクを取得した学生はレポートを開くことができることに注意してください。プロジェクトの情報が漏洩しないように、レポートを公共の場所で共有しないでください。

ここでは、Jenkins を例として、クラウド測定サービスが Jenkins とどのように通信できるかを詳しく紹介します。

環境整備

※環境整備はWindow10+Pythonプロジェクト+Gitコード版数管理+Jenkinsを例に紹介しております Linux OS、SVNコード版数管理、Javaプロジェクトなど、ご要望に応じた環境をご用意できます。

以下の手順は不要です。既にインストール済みの場合はスキップできます。

  • JDK8をインストール

  • Python 38 をインストールする

  • Git をインストールする

  • ジェンキンスをダウンロード (https://www.jenkins.io/download/)

  • Jenkins をインストールします (ユーザー マニュアル https://www.jenkins.io/doc/book/getting-started/ を参照)。

  • 管理者ユーザーを作成する

  • Git を構成します (ここでは例として Git を使用してテスト スクリプトを保存します。ユーザーは SVN などの他のツールを使用して保存することもできます)

    • git プラグインをインストールします
      [Jenkins の管理] > [プラグインの管理] を選択して
      、git プラグインをインストールします
    • git ツールを構成する
      Jenkins の管理 > グローバル ツール構成

    ここに画像の説明を挿入

    • 資格情報の追加
      Jenkins の管理 > 資格情報の管理 > 資格情報の追加
      ここに画像の説明を挿入

Jenkins は小規模なプログラムのクラウド テストの自動テストを実装します

  • 新しいアイテムを作成します。
    たとえば、Freestyle プロジェクトを選択します。
    ここに画像の説明を挿入

  • 構成

    1. GitHub プロジェクトを選択します
    ここに画像の説明を挿入
    2. Git を選択して資格情報を追加し、[追加の動作] で [サブディレクトリにチェックアウト] を選択します
    ここに画像の説明を挿入
    ここに画像の説明を挿入
    3. トリガーをビルドし、[定期的にビルド] を選択します
    ここに画像の説明を挿入

    4. ビルドし、[Windows バッチ コマンドの実行] を選択し、実行するコマンドを入力します。
    ここに画像の説明を挿入

    その中で、test.py スクリプトは、クラウド テストのサードパーティ サービスを要求するためのインターフェイス コードです。

class MiniTestApi:
    def __init__(self, user_token, group_en_id):
        self.token = user_token          # 需要填写自己的token
        self.group_en_id = group_en_id   # 项目的英文ID
        self.minitest_api = 'https://minitest.weixin.qq.com/thirdapi/plan'
        self.share_api = 'https://minitest.weixin.qq.com/thirdapi/share_url'

    def third_auto_task(self):
        """
        提交测试任务
        :return:
        """
        config = {
    
    
            "assert_capture": True,
            "auto_relaunch": True,
            "auto_authorize": False,
            "audits": True,
            "compile_mode": "pages/getOpenId/index?p=1&m=2"
        }

        data = {
    
    
            'token': self.token,
            'group_en_id': self.group_en_id,
            'test_type': 2,
            'platforms': 'android,ios',
            'wx_id': '',
            'wx_version': 3,
            'desc': 'Minium测试',
            'test_plan_id': 6,
            'dev_account_no': 1,
            'minium_config': config,
        }
        resp = requests.post(
            self.minitest_api,
            json=data
        )
        resp = resp.json()
        print(resp)
        return resp

    def query_auto_task(self, plan_id):
        """
        查询测试任务
        :param plan_id:
        :return:
        """
        data = {
    
    
            'token': self.token,
            'group_en_id': self.group_en_id,
            'plan_id': plan_id,
        }
        resp = requests.get(
            self.minitest_api,
            params=data
        )
        resp = resp.json()
        print(resp)

    def share_url(self, plan_id):
         """
         获取报告分享链接
         :param plan_id:
         :return:
        """
        data = {
    
    
            'token': self.token,
            'group_en_id': self.group_en_id,
            'plan_id': plan_id,
        }
        resp = requests.get(
            self.share_api,
            params=data
        )
        resp = resp.json()
        print(resp)


if __name__ == '__main__':
    minitest_client = MiniTestApi('xxx', 'xxx')
    # 提交测试任务
    result = minitest_client.third_auto_task()
    if "plan_id" not in result["data"].keys():
        exit(1)
    plan_id = result["data"]["plan_id"]
    time.sleep(10)
    # 查询任务状态
    # status  1: 排队中  2: 测试中  11: 未发现Case  12: 测试结束  15: 任务超时
    minitest_client.query_auto_task(plan_id)
    # 获取任务报告分享链接
    # minitest_client.share_url(plan_id)

助けが必要

おすすめ

転載: blog.csdn.net/WXMiniTest/article/details/127076848