0

次の PyUnit テストを実行します。

import unittest #imports unit test/ability to run as pyunit test
from page_objects.webdriver_wrapper import webdriver_wrapper
from page_objects.home import home
from page_objects.inbook import inbook
from page_objects.myebooks import myebooks
from page_objects.login import login
import time

class regression(unittest.TestCase):

    def regression(self, webd_wrap):
        page_login = login(webd_wrap)
        page_login.secure_login()


    def test_regression(self): #running x as a unit test
        for browser in webdriver_wrapper().setUp():
            self.regression(webdriver_wrapper(browser))


print "Module Complete", __name__
if __name__ == "__main__":
    unittest.main()

次のエラーが表示されます。

    ERROR: test_regression (mobile_testing.regression_test.regression)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/Zola/Documents/workspace/com.zolamobile.eviltest/mobile_testing/regression_test.py", line 24, in test_regression
    for setUp in webdriver_wrapper().setUp():
TypeError: 'NoneType' object is not iterable

webdriver_wrapper は、iOS デバイス上のこの unittest で実行するための setUp を含むライブラリ モジュールです。セットアップは次のようになります。

def setUp(self):
        # set up appium
        success = True
        app = "com.zolabooks.zolareader"
        app = os.path.abspath(app)
        self.driver = webdriver.Remote(
            command_executor='http://127.0.0.1:4723/wd/hub',
            desired_capabilities={
                'browserName': 'iOS',
                'platform': 'Mac',
                'version': '6.1',
                'ipa': app
            })
        self._values = []

ページ上の要素を抽象化できるように、ページ オブジェクト モデル フレームワークを使用してこれを機能させようとしています。

編集:これは、iOS の代わりにブラウザーを使用するセレンの作業コードです。

def test_addtolist_notsignedin_modal(self): #running x as a unit test
        for browser in webdriver_wrapper._browsers:
            self.add_to_list_notsignedin_modal_test(webdriver_wrapper(browser))

_browsers は次のように定義されます。

_browsers = ["chrome", "firefox"]

def open_chrome(self):
        self._driver = webdriver.Chrome('/Users/Jay/Downloads/chromedriver')
        self._driver.implicitly_wait(10)
        self.wait = WebDriverWait(self._driver, 10)

    def open_firefox(self):
        self._driver = webdriver.Firefox()
        self._driver.implicitly_wait(10)
        self.wait = WebDriverWait(self._driver, 10)
4

2 に答える 2

0

メソッドからの戻り値を反復しようとしていますsetUp():

for browser in webdriver_wrapper().setUp():

(エラー メッセージには、for setUp in webdriver_wrapper().setUp():... don't know why the difference. 貼り付けたコードと実際に実行しているコードが異なる可能性があります。ただし、いずれにしても原因は同じです。)

問題はsetUp()、何も返さないことです。つまり、 を返しますNoneNoneエラーメッセージが示すように、反復可能ではありません。

setUp()何を返す必要があるのか​​ 正確にはわかりません。もちろん、リストまたはイテレータですが、何ですか?ブラウザ?セットアップ?そのようなものは何も見えません。

于 2013-07-18T20:33:29.327 に答える
0

あなたのsetUp関数は何も返さない(つまり、None)ので、次のように書きます:

for browser in webdriver_wrapper().setUp():

これはsetUp... の結果を反復することになっています。 を反復することはできませんNone。少なくとも空のリストを返します。

于 2013-07-18T20:34:41.880 に答える