当我运行我的脚本时:
from selenium import webdriver
# from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import os
import pytest
import unittest
from nose_parameterized import parameterized
class multiBrowsers(unittest.TestCase):
@parameterized.expand([
("chrome"),
("firefox"),
])
def setUp(self, browser):
if browser == "firefox":
caps = DesiredCapabilities.FIREFOX
caps["marionette"] = True
caps["binary"] = "/Applications/Firefox.app/Contents/MacOS/firefox-bin"
self.driver = webdriver.Firefox(capabilities=caps)
elif browser == "chrome":
self.driver = webdriver.Chrome()
def test_loadPage(self):
driver = self.driver
driver.get("http://www.google.com")
def tearDown(self):
self.driver.quit()
我收到错误:
Error
TypeError: 'NoneType' object is not callable
我读到我没有正确传递信息,但我不知道在哪里看。在此先感谢您的帮助!
答案 0 :(得分:0)
总猜,但我认为这可能是你的问题:
@parameterized.expand([
("chrome"),
("firefox"),
])
@parameterized
中的某些内容可能无法将其视为元组。尝试添加逗号以明确表示元组:
@parameterized.expand([
("chrome", ),
("firefox", ),
])
答案 1 :(得分:0)
不确定参数化是否可以应用于setUp,我设法使其与测试功能一起使用:
@parameterized.expand([
("chrome"),
("firefox"),
])
def test_loadPage(self, browser):
添加@parametrized装饰器后,出现'NoneType' object is not callable
错误,并且在测试资源管理器中未正确显示测试名称。
在刷新测试资源管理器中的方法后,测试名称的格式设置为test_loadPage_0_chrome
并且测试有效。
答案 2 :(得分:0)
我在将 parametrized.expand 与 unittest.TestCase 类一起使用时遇到了同样的错误。 虽然构建套件参数化添加到测试 _0、_1 就足够了,因此如果您手动将测试添加到套件中,则会引发此错误。 最好的解决方案是使用,
suite = unittest.TestSuite()
testloader = unittest.TestLoader()
testnames = testloader.getTestCaseNames(t_class)
for name in testnames:
suite.addTest(t_class(name))
runner = unittest.TextTestRunner(verbosity=2)