個人的には、クラスを使用して PageObjects (cucumber/selenium から着想を得ています) を定義し、ラッパーを使用してウィジェットの機能を定義し、ログインしてテスト対象のモジュールをロードするためのデコレーターを使用します。これにより、コードを最大限に再利用し、メンテナンスのオーバーヘッドを最小限に抑えることができます。
また、開発者がウィジェットに賢明な名前を付けて事前に定義することを理解している限り、コードを作成する前にテストを作成できることも意味します。
from globals.widgets.QPushButton import QPushButtonWrapper # simple click functions
from globals.toolbars.sometoolbar import SomeToolBar
class SomeFormPO(PageObject): #PageObject has some "lazy ok and cancel methods"
def __init__(self):
name = <symbolic name>
PageObject.__init__(self, name)
self.some_tool_bar = SomeToolBar() # contains defines for toolbar e.g.
# self.some_button = QPushButtonWrapper(<symbolic name of button>)
次に、テストで:
from globals.path.login.login import LoginDecorator
from globals.path.pages import SomeFormPO
def main():
"""
sensible test details
"""
log_docstring(main)
run()
@LoginDecorator
def run():
some_form = SomeFormPO()
test.verify(some_form.visible(), "some form is visible")
some_form.some_tool_bar.some_button.click()
これはメソッドを完全に説明する場所ではありませんが、読んでいただければ:-
UI Tests with Cucumber (5 part blob series) <http://www.cheezyworld.com/2010/11/09/ui-tests-not-brittle/>
_ (ルビー)
Selenium on PageObjects <http://code.google.com/p/selenium/wiki/PageObjects>
_ (Java)
使用される原則を理解することができます。