Web自動テストフレームワークpystest、Pythonと組み合わせたSelenium、テスターはコードを知る必要はなく、達成するための構成を記述するだけで済み、コードを理解しているテスターが拡張するのに便利です

自動テストにPythonSeleniumを使用する

  • PC、H5での実行をサポートし、エージェントはインターフェイスデータの取得、ヘッドレスモード、レポート(スクリーンショットを含む)の生成、電子メールの送信などを行います。

クイックスタート

  • グローバル構成をコピーして変更します。cp config.example.yaml config.yamlこのファイルはグローバル構成です。configディレクトリ内のファイルはこの構成を上書きできます

  • 使用:、python test.py filenamefilenameは、プロジェクトのconfigディレクトリ内のファイル名です。たとえばpython3 test.py default、ファイル名
    入力されていない場合は、デフォルトで使用されます。default.yaml

  • テストケースはYAMLの一般的な形式で記述されています。詳細については、YAMLの例を参照してください。

  • 既存のユースケースを実行しますpython3 test.py default,test1。Baiduを開いて「stingbopystest」を検索し、githubディレクトリにジャンプして、最後に指定されたプロジェクトを開きます。

その他のコマンド

  • configディレクトリ内のすべてのユースケースを表示します。python3 test.py ls

  • 複数のテストケースを同時に実行します。python3 test.py test1,test2,test3

  • configディレクトリ内のすべてのテストケースを実行します。python3 test.py all_test

頼る

使用説明書

  • フレームワーク操作ロジック:

    1. 構成の取得、構成アイテムのマージ、ブラウザーの起動
    1. wait_disappear消えるのを待つように設定するかどうか
    1. iframeはiframeを切り替えるように構成されています
    1. ロードの待機を構成するかどうかを待つ
    1. リスナーがリッスンするように構成されているかどうかに関係なく、構成はリッスンを開くことです
    1. タイプ、コンテンツ、インデックスに従って要素を検索します
    1. javascriptが構成されているかどうか、構成されている場合は、javascriptを実行します
    1. アクションに基づいてアクションを実行する
  • 設定ファイルは以下の内容に分かれており、フォーマットの説明は以下のとおりです。

    1. DEBUG:ブール値True/False、、デバッグモードをオンにするかどうか、True-レポートは生成されず、デバッグが簡単です
      IMAGE:ブール値、、True/Falseスクリーンショットを撮るかどうか、DEBUGはFalse、IMAGEはTrueに設定されてスクリーンショットを撮ります

    2. メール:メール設定。設定が正しければ、テストケース実行レポートが送信されます

    3. BROWSER、ブラウザレイヤーの設定

      type:文字列、使用されているブラウザのタイプ、現在サポートされている Chrome/Firefox

      bmp_path:文字列、browsermob_proxyアドレス、プロキシの使用、APIリクエストの使用へのアクセス

      プロキシ:ブール値、、プロキシTrue/Falseを開くかどうか

      h5:ブール値、、True/Falseテストにh5を使用するかどうか、ブラウザを開くかどうか

      device_name:文字列、h5モードでシミュレートされたデバイスの名前、現在Chromeでのみ有効、Firefoxによって実装される戦略は、user_agentを変更し、ブラウザーインターフェイスのサイズを設定することです。

      ヘッドレス:ブール値、True/Falseヘッドレスモードを開くかどうか、インターフェイステストなし、サーバーの自動展開に簡単に統合

    4. WEBSITE、スタートページ設定

      url:文字列、開始ページアドレス、現在この構成のみが利用可能です

    5. メニュー、テストケースの詳細

      キー:文字列、メニューパス

      名前:文字列、メニュー名/機能名、ユーザーが構成を表示して使用するのに便利

      タイプ:文字列、要素を見つける方法、webdriverによって提供されるものと一致する

      content:string、上記のタイプは要素の検索に使用されるコンテンツに対応し、一度は検索でき、一部のパスは一度は検索できません(絶対パスではなく、一般的なルールを参照)、コンテンツが使用されます。構成されている場合なしの場合、現在は実行されません。構成ステップ7は、要素の後続のプロセスを検出しますが、他の構成を実行し続けます。

      内容:配列、要素を複数回検索することで使用される内容

      index:整数、複数の要素が存在する可能性があります。indexを使用して1つを修正します。-1はデフォルトを意味し、-2はすべて、0以上を意味し、リストの添え字を意味します。

      操作:配列、アクションの前に実行する操作、配列タイプ、形式は上記と同じです

      アクション:文字列、アクションが実行される
      。1.どれも:JavaScriptのオプションが設定されている場合はなしとして設定は、何もタスク操作は、実行されないアクションを実行する最後のものであるので、Javascriptを、要素上で実行される
      オープン2を:クリックと同様にメニューを開きますが、判定フラグを設定し、現在クラス判定を実現しているオープン設定項目を追加できます。このクラスがある場合はクリックされません。目的は特定のメニューを防ぐことです。開いてからクリックすると閉じ
      ます3.クリック:
      要素をクリックします4. moveToClick:ターゲット要素に移動して要素をクリックします
      5. sendKeys:入力できる値を入力します。詳細については以下の値を参照してください
      5. modifyKeys:sendKeysと同じですが、最初にクリアされる点が異なります
      詳細については、以下の値を参照してください。6。upload :upload、valueはアップロードされたファイルのアドレスです。

      value:string、アクションがsendKeys(input)/ modifyKeys(modify)の場合、valueが必要であり、valueはpkgpath:utils.util.Util:randstr:6(from utils.util import Util)などのカスタムメソッドを使用できます。 && Util .randstr(6))、他のカスタムメソッドについてはut​​ils / utilを参照してください

      javascript:文字列、「arguments [0] .scrollIntoView();」などのjavascriptコードは、現在、単純なjavascriptコード操作をサポートしています。現在の構成アイテムが複数の要素に対して取得されている場合、複雑なものは自分で変更する必要があります。 javascriptが実行されます

      リスナー:配列、監視する必要のあるapi urlと返されるコード、リスナーを使用するためにBrowserMobプロキシをインストールする必要があり、正しいアプリケーションパスを構成する必要があります

      iframe:文字列、iframeのIDまたは名前。構成後、対応するiframeレイヤーへの切り替えが実行されます。構成が空の場合、現在のiframeレイヤーに残るか、切り替え操作は実行されません。構成なしの場合、対応するiframeレイヤーに戻ります。

      wait:オブジェクト、要素が表示されるのを待つなど、タイプとコンテンツ(意味は上記と同じ)を含む、ロードを待機している要素

      wait_disappear:オブジェクト、消えるのを待っている要素、タイプとコンテンツ(上記と同じ意味)を含みます(マスクレイヤーの消えるのを待つなど)

      wait_time:数値、特定のアクションの固定待機時間を秒単位で指定します

    6. TEST、array、実行する特定のテストケースを指定します。testa2それ以上submenuある場合は、自動的に取得して実行します。複数のファイルのTEST構成を
      組み合わせて実行します。実行の順序は、テスト時の名前の順序です。ケースが入力されます

      TEST:
          - login
          - testa.testa1.testa2
          - testb.testb1.testb2
          - testc.testc1
      

YAMLの例

DEBUG: True/False #是否开启调试模式,True-不生成生成报告,方便调试
IMAGE: True/False #是否截图,DEBUG为False且IMAGE设置为True时截图

MAIL:
    SEND: True/False
    # 邮箱服务端配置
    SMTP:
        username: [email protected]
        password: xxxxxxxxxx
        host: smtp.163.com
        port: 25
    # 收件人列表
    receiver:
        - [email protected]
        - [email protected]

BROWSER:
    #浏览器类型
    type: Chrome/Firefox
    #bmp程序路径
    bmp_path: your/browsermob-proxy/path
    #是否开启代理,开启后,配置listener的操作,会记录请求日志到logs目录下
    proxy: True/False
    #H5
    H5: True/False
    #模拟的设备名称,目前只有在Chrome下生效,Firefox实现的策略是修改user_agent并设置浏览器界面大小
    device_name: iPhone 7
    #是否开启无头模式
    headless: True/False

WEBSITE:
    #启动页地址
    url: http://www.your_website_url.com

MENU:
    login:
        key: login
        name: 登录
        type: xpath
        content: //button[@class='btn btn-primary' and text()='登录']
        index: -1
        action: click
        listener:
            -
                url: login/url
                code: 0
        operation:
            -
                name: 用户名
                type: tag name
                content: input
                value: xxxxx
                index: 2
                action: sendKeys
            -
                name: 密码
                type: tag name
                content: input
                value: xxxxx
                index: 3
                action: sendKeys

総括する

  • コンテンツを使用して要素を複数回取得する場合は、最後の範囲の要素を取得し、。//(ドット+ダブルスラッシュ)を使用します

  • クラスマッチングを使用する場合、クラスにスペースがある場合は、xpathを構成するときにそれらも含めるか、containsを使用する必要があります。

  • 前commit.sampleプロジェクトファイルGitのフックで、cp pre-commit.sample .git/hooks/pre-commit
    依存yapfおよびpyflakesフォーマット検出Pythonコードの構文については、

  • 使用例は基本的にconfigディレクトリのファイルにあります。ご利用をよろしくお願いします。ご質問やご提案がございましたら、問題を送信してください。

おすすめ

転載: blog.csdn.net/sting_bo/article/details/113794119