运行以下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。 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 = []
我正在尝试使用Page Object Model框架来实现这一点,以便可以抽象页面上的元素。
编辑:这是使用浏览器代替iOS的selenium的工作代码:
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)
答案 0 :(得分:0)
您正在尝试迭代setUp()
方法的返回值:
for browser in webdriver_wrapper().setUp():
(错误消息显示for setUp in webdriver_wrapper().setUp():
...不知道为什么会有差异。也许您粘贴的代码与您实际运行的代码不同。但无论如何,原因都是相同的。)< / p>
问题是setUp()
没有返回任何内容,这意味着它返回None
。正如错误消息所述,None
不可迭代。
我不清楚setUp()
应该返回的确切内容。一个列表或迭代器,显然,但是什么?浏览器?设置?我没有看到任何类似的东西。
答案 1 :(得分:0)
您的setUp
函数不返回任何内容(即:无),然后您编写:
for browser in webdriver_wrapper().setUp():
应该迭代setUp
的结果......一个人不能遍历None
。至少返回空列表。