Python + Selenium3之DDT数据驱动

Posted Owen_ET

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python + Selenium3之DDT数据驱动相关的知识,希望对你有一定的参考价值。

完整代码:

import unittest
from time import sleep
from selenium import webdriver
from ddt import ddt,data,file_data,unpack
from selenium.webdriver.common.by import By


@ddt
class TestBaiduSearch(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        cls.driver = webdriver.Chrome()
        cls.url = "https://baidu.com"


    def baidu_search(self,keys):
        self.driver.get(self.url)
        self.driver.find_element(By.CSS_SELECTOR,"#kw").send_keys(keys)
        self.driver.find_element(By.CSS_SELECTOR,"#su").click()
        sleep(5)


    # 参数化例1
    @data(["case1","selenium3"],["case2","python3"],["case3","百度"])
    @unpack
    # @unittest.skip
    def test_baiduSearch01(self,case,data_key):
        print("第一组测试用例:"+case)
        self.baidu_search(data_key)
        self.assertEqual(self.driver.title,data_key + "_百度搜索",msg="标题不正确!")




    # 参数化例2:json
    @file_data("./data/ddt_data_file.data")
    def test_baiduSearch02(self,keys):
        print("第二组测试用例:",keys)
        self.baidu_search(keys)
        self.assertEqual(self.driver.title, keys + "_百度搜索", msg="标题不正确!")


    # 参数化例3:yaml
    @file_data("./data/ddt_data_file.yaml")
    @unpack
    def test_baiduSearch03(self,**kwargs):
        keys = kwargs[data1][1][keys]
        print("第三组测试用例:",keys)
        self.baidu_search(keys)
        self.assertEqual(self.driver.title, keys + "_百度搜索", msg="标题不正确!")


    @classmethod
    def tearDownClass(cls):
        print("用例结束!")
        cls.driver.quit()


if __name__ == __main__:
    unittest.main(verbosity=2)

json文件:ddt_data_file.data

{
  "case1":{"keys":"11"},
  "case2":{"keys":"12"},
  "case3":{"keys":"13"}
}

 

yaml文件:ddt_data_file.yaml

用例1:
  data1:
    - keys: "yaml01"
    - keys: "yaml02"
  data2:
    - keys: "yaml03"
    - keys: "yaml04"
用例2:
  data1:
    - keys: "yaml05"
    - keys: "yaml06"
  data2:
    - keys: "yaml07"
    - keys: "yaml08"
用例3:
  data1:
    - keys: "yaml09"
    - keys: "yaml10"
  data2:
    - keys: "yaml11"
    - keys: "yaml12"

yaml转换数组:

list = 
[{
‘case1‘:
{ ‘data1‘: [ { ‘keys‘: ‘yaml01‘ }, { ‘keys‘: ‘yaml02‘ } ],
‘data2‘: [ { ‘keys‘: ‘yaml03‘ }, { ‘keys‘: ‘yaml04‘ } ] },
‘case2‘:
{ ‘data1‘: [ { ‘keys‘: ‘yaml05‘ }, { ‘keys‘: ‘yaml06‘ } ],
‘data2‘: [ { ‘keys‘: ‘yaml07‘ }, { ‘keys‘: ‘yaml08‘ } ] },
‘case3‘:
{ ‘data1‘: [ { ‘keys‘: ‘yaml09‘ }, { ‘keys‘: ‘yaml10‘ } ],
‘data2‘: [ { ‘keys‘: ‘yaml11‘ }, { ‘keys‘: ‘yaml12‘ } ] }
}]

 

以上是关于Python + Selenium3之DDT数据驱动的主要内容,如果未能解决你的问题,请参考以下文章

selenium3+python3——数据驱动(DDT)

Selenium3+Python3_15:数据驱动ddt+excel

Python3+Selenium3+Unittest+ddt+Requests 接口自动化测试框架

Python 之数据驱动工具:DDT

接口测试(Python)之DDT

python之ddt模式随记三,ddt模式用例标题过长解决