import unittest
from ddt import data, unpack
from selenium import webdriver
import ddt
@ddt
class searchddt(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(30)
self.driver.maximize_window()
self.driver.get('https://magento.com/products/magento-commerce')
@data(("phones",2))
@unpack
def test_search(self,search_val,expected_count):
self.searchfield=self.driver.find_element_by_xpath("//I[@aria-hidden='true']/self::I")
self.searchfield.clear()
self.searchfield.send_keys(search_val)
self.searchfield.submit()
def tearDown(self):
self.driver.quit()
if __name__=='__main__':
unittest.main(verbosity=2)
FAILED (errors=1)
Error Traceback (most recent call last): File
"C:\Python27\lib\unittest\case.py"
, line329
, in run testMethod() File"C:\Python27\lib\unittest\loader.py"
, line 32, in testFailure raise exception ImportError: Failed to import test module: ddt class searchddt(unittest.TestCase): TypeError: 'module' object is not callableProcess finished with exit code 1
我认为问题在于你们进口所需的装饰器的方式
如果您看最后一条语句,您将导入ddt,它是一个模块,这将导致装饰类时出现错误。您需要一个位于ddt模块内部的decorator-callable。在
我认为解决办法是像这样在第一行导入它
^{pr2}$这里有两个问题。在
另一个答案涵盖了第一个问题:您需要}。在
from ddt import ddt
,而不是{第二个是测试函数用}。这不是你想要的。在
@unpack
修饰,因此传递给@data
的元组将被ddt解包,创建两个函数调用:test_search_1("phones")
和{你可能想要这样的东西:
还有一个额外的第三个问题,那就是测试和拆卸函数的缩进,这不应该在设置中。在
相关问题 更多 >
编程相关推荐