参数化之ddt数据驱动框架

要使用ddt首先先安装ddt模块:pip install ddt。ddt数据驱动只能适用于unittest子类的类装饰器。

单个参数参数化:

from ddt import ddt,data,unpack
import unittest
from selenium import webdriver
import time

search_data = (‘selenium‘, ‘pytest‘, ‘python‘)   #单个参数

@ddt
class testDDT(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get(‘https://www.baidu.com/‘)

    # todo 把数据改成变量存储运行时,需要在前面加*
    @data(*search_data)
    def testddt(self, data):
        self.driver.find_element_by_css_selector(‘#kw‘).send_keys(data)
        self.driver.find_element_by_css_selector(‘#su‘).click()

    def tearDown(self):
        time.sleep(3)
        self.driver.quit()

if __name__ == ‘__main__‘:
    unittest.main()

上面这段代码在搜索百度的时候,会搜索3次,分别搜索selenium, pytest, python。同一段代码,代码不变,数据在变。提高了代码的复用性。

说下@ddt和@data这2个装饰器分别表示什么意思。

@ddt固定写法,这个不用纠结,使用ddt要在类上面加个装饰器@ddt,加了装饰器你才能使用ddt里面的方法。

@data装饰我们的测试方法 ,可以理解为一个for循环,循环遍历元组里面每个数据 ,然后依次传递给被装饰的方法的一个参数,有几条数据 就执行几次用例

@unpack自动拆包data里面的数据

多个参数参数化:

from ddt import ddt,data,unpack
import unittest
from selenium import webdriver
import time

testData = (["selenium","pytest"],["python","yield "])   #多个参数

@ddt
class testDDT(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        self.driver.get(‘https://www.baidu.com/‘)

    # todo 把数据改成变量存储运行时,需要在前面加*
    @data(*testData)
    @unpack
    def testddt(self, data1,data2):
        self.driver.find_element_by_css_selector(‘#kw‘).send_keys(data1,data2)
        time.sleep(1)
        self.driver.find_element_by_css_selector(‘#su‘).click()

    def tearDown(self):
        time.sleep(1)
        self.driver.quit()

if __name__ == ‘__main__‘:
    unittest.main()

原文地址:https://www.cnblogs.com/xiamaojjie/p/11577782.html

时间: 2024-11-11 01:01:39

参数化之ddt数据驱动框架的相关文章

python ddt数据驱动框架

import unittestfrom ddt import  ddt, data, unpack @ddtclass MyTestCase(unittest.TestCase): @data((1, 2), (2, 3)) #多个数据项    @unpack #两个或超过两个需要使用@unpack    def test_something(self, value1, value2):        print value1, value2        self.assertEqual(va

Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存放Excel表 3.封装一套读取和写入的Excel方法 4.重写request方法(为了从Excel读取数据后对数据作分析和判断并在测试报告生成相关信息) 5.通过HTMLTestRunner运行测试用例生成网页版报告 6.将自动化脚本放到公司git上,方便其他人员获取你的代码进行编写脚本,后面会具

selenium python自动化测试 ddt数据驱动

安装ddt  pip install ddt 直接上代码: 1 # coding:utf-8 2 import ddt 3 import time 4 import excelunit 5 import unittest 6 from selenium import webdriver 7 8 # 测试数据 9 data = excelunit.ExcelUtil("test.xlsx", "sheet1") 10 testData = data.dict_data

接口自动化---简单的数据驱动框架ATP(基于excel)

数据驱动测试:根据数据进行测试.将用例写入excel文件,用代码读取文件中的数据,从而实现自动化测试. 自动化框架实现步骤: 1.获取用例 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志一.首先准备好用例 在excel文件中用例写好,格式如下:数据一定要填写正确. 二.编写框架结构 ATP框架结构搭建:lib目录下放一些处理操作,logs目录下存放日志文件,cof文件夹放一些配置文件,bin文件夹作为启动文件,cases目录下放我们准备好的用例 注意:文件目录建好以后,必须

python接口自动化--ddt数据驱动

一.安装 pip install ddt 二.数据驱动需在类名上加@ddt.ddt,在测试用例上加@ddt.data(*data) ,data为准备的数据 1 import unittest 2 import ddt 3 4 #测试需要准备的数据 5 data = [ 6 {"user":"admin1","pwd":"111111","expect":"True"}, 7 {"

【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.dri

Python ddt数据驱动

import unittestfrom time import sleep import ddt# 导入ddt模块from selenium import webdriver @ddt.ddt# 声明使用ddtclass MyTestCase(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.base_url = "https://www.baidu.com/" self.driver

ddt数据驱动

安装 pip install ddt 1.ddt的原理:[Data driver test] ddt其实是一个类装饰器,一般用来装饰测试用例类,可加载测试数据. data: 在@data中传了几个参数就会生成几个测试用例. 注意:使用ddt进行装饰测试用例后,在加载测试用例时: # 通过测试用例类来加载测试用例 suite.addTest(loader.loadTestsFromTestCase(RegisterTestCase)) # 通过测试用例模块来加载测试用例 suite.addTest

python+selenium九:ddt数据驱动

读取excel内容 import xlrdclass ExcelUtil(): def __init__(self, excelPath, sheetName): #def __init__(self, excelPath, sheetName): self.data = xlrd.open_workbook(excelPath) self.table = self.data.sheet_by_name(sheetName) # 获取第一行作为key值 self.keys = self.tabl