无法在python 2.7中导入ddt

时间:2017-11-25 11:59:12

标签: python python-2.7 selenium

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)

导入ddt时出错,代码未执行

  

错误           Traceback(最近一次调用最后一次):             运行中的文件"C:\Python27\lib\unittest\case.py",行329               测试方法()             在testFailure中归档"C:\Python27\lib\unittest\loader.py",第32行               提出例外           ImportError:导入测试模块失败:ddt                          class searchddt(unittest.TestCase):           TypeError:' module'对象不可调用

Process finished with exit code 1

1 个答案:

答案 0 :(得分:0)

这里有两个问题。

第一个问题由另一个答案涵盖:您需要from ddt import ddt而不是import ddt

第二个是你的测试函数用@unpack修饰,所以传递给@data的元组将被ddt解压缩,创建两个函数调用:test_search_1("phones")和{{1 }}。这不是你想要的。

您可能需要以下内容:

test_search_2(2)

还有第三个问题,即test和tearDown函数的缩进,不应该在setUp中。