MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

パート 9: アプリオブジェクトの複製を抑える

自動テストでは、多くの場合、抽象コードに app のオブジェクトを使用します。これは、コードとロケータの重複を減らすことができます。コードの共通部分を変更する必要がある場合、むしろ10または20テストファイルでそれを変更することよりも、単一の app のオブジェクトに変更することができます。この記事では、app のオブジェクトを使用する方法の基礎を提供します。

アプリオブジェクト: 入門

app オブジェクトは、メソッド、ページ上のアクションを表すプロパティを含むPythonのクラスです。理論的な例では、これらを使用する方法を見てみましょう。

homepage.py

下記はいくつかの含まれている擬似コードとともに、ホームページのアプリのために使用する場合があるフレームです。

class Homepage:
        __init__(self, marionette):
                # Marionette is passed in so that the object can use it
                self.marionette = marionette
 
        def switch_to_homepage_frame(self):
                # Code for switching to System then to Homepage frame

        def tap_contacts_icon(self):
                # Code to tap the icon
                # Switch to Contacts frame
                # Now we return the Contacts app object as it has focus
                from contacts import Contacts
                return Contacts(self.marionette)

contacts.py

そしてここでいくつかの擬似コードで再度、連絡先アプリに使用するかもしれないものです。

class Contacts:
        _new_contact_button = (By.ID, ‘id’)
 
        def tap_new_contact(self):
                # Tap new contact icon
                # Wait for event
 
        def type_given_name(self, name_string):
                # element.send_keys(name_string)

test_contacts.py

これはテストのコンテキストでどのように機能するかを理解するために、下記はHomepage のクラスを利用した迅速なサンプルです。:

from homepage import Homepage

def test_add_contact(self):
        homepage = Homepage(self.marionette)
        homepage.switch_to_homepage_frame()
         
contacts = homepage.tap_contacts_icon()
contacts.tap_new_contact()

テストを更新

ここからは、新しいアプリケーションのオブジェクトシステムを使用するようにテストのすべてのファイルを更新するために挑戦したいと思います。

これは困難な作業であり、Pythonのクラス構造に慣れていない場合は、参照とコードサンプルのためのいくつかの書籍を参照する必要があります。

完了したら、理想的には、テストファイル間の明確な分離を持っています:

  1. TestBaseは、setUp()tearDown() メソッドを含みます。
  2. app オブジェクトはページの相互作用とロケータが含まれています
  3. テストファイルは、単にテスト手順が含まれます。

がんばろう!

ドキュメントのタグと貢献者

 このページの貢献者: chrisdavidmills, hamasaki, Uemmra3, shide55
 最終更新者: chrisdavidmills,