python3.6+selenium_使用ddt执行数据驱动测试

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2018/12/26 10:42
# @File : unittest_test8_1.py
'''
使用ddt执行数据驱动测试,其中我们在测试类上使用@ddt修饰符,在测试方法上用@data装饰符,可以把参数当测试数据,
参数可以是单个值,列表,数组,字典,对于列表,需要用@unpack装饰符把元组和列表解析成多个参数
注:运行的时候光标的位置放在 test_search 方法里面会报错,将光标放到外面,则运行通过
'''
import unittest
from ddt import ddt,data,unpack
from selenium import webdriver
@ddt
class SearchDDT(unittest.TestCase):
    #初始化浏览器和url
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.implicitly_wait(30)
        self.driver.maximize_window()
        self.driver.get("https://www.baidu.com/?tn=78000241_12_hao_pg")

    #创建一个测试用例
    @data(("phones",1),("salt shaker",1))
    @unpack
    def test_search(self,search_value,expected_count):     #参数值和期望结果
        self.search_file = self.driver.find_element_by_name('wd')
        self.search_file.clear()
        self.search_file.send_keys(search_value)
        self.search_file.submit()
        product = self.driver.find_elements_by_xpath('//*[@id="1"]/h3/a')
        #p = [product,]
        self.assertEqual(expected_count,len(product))

    #清理所有的 初始化值
    def tearDown(self):
        self.driver.quit()

#运行测试,传递verbosity参数,以便使详细的测试总量显示在控制台
if __name__=='__main__':
    unittest.main(verbosity=2)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019-06-11 11:00
# @Author : zhouyang
# @File : testdataIn.py

'''测试数据为多个字典的list类型,不是引入外部文件'''
import ddt
import unittest
#测试数据
testData=[{'username':'zhangsan','psw':'123456q'},
          {'usernamr':'lisi','psw':'123456w'},
          {'username':'wangwu','psw':'123456e'}
          ]
@ddt.ddt
class Test(unittest.TestCase):
    def setUp(self):
        print('start')
    def tearDown(self):
        print('end')
    @ddt.data(*testData)
    def test_ddt(self,data):
        print(data)

if __name__ == '__main__':
    unittest.main
View Code
原文地址:https://www.cnblogs.com/xiuxiu123456/p/10435918.html