冒泡泡de可乐
代码都是思想和概念的体现~每多学一点知识,就能少写一行代码~
posts - 80,comments - 1,views - 31997

      通过使用数据驱动测试的方法,可以在需要验证多组数据的测试场景中,使用外部数据源实现对输入值和期望值的参数化,从而避免在测试中仅使用硬编码的数据。将测试数据和测试脚本分离开,使得测试脚本在不同数据集合下高度复用。

 

     使用方法

      在测试类上使用@ddt装饰符, 在测试方法上使用@data装饰符。  @data装饰符把参数当作测试数据,参数可以是单个值、列表、元组、字典。对于列表,需要用@unpack装饰符把元组和列表解析成多个参数。     

1
2
3
@ddt.data(("phones",2),("music",5))
@unpack
def test_search(self,search_value,expected_count):

  使用外部数据的数据驱动测试

        1.通过CSV获取数据

 

 

复制代码
import csv,unittest
from ddt import ddt,data,unpack
from selenium import webdriver

def get_data(file_name):
    rows =[]
    data_file = open(file_name,"rb")
    reader = csv.reader(data_file)
    #skip the headers
    next(reader,None)
    for row in reader:
        rows.append(row)
    return rows

@ddt
class SearchCsvDDT(unittest.TestCase):
    .......
    #get the data from specified csv file by calling the get_data function
    @data(*get_data("testdata.csv"))
    @unpack
    def test_search(self,search_value,expected_count):
        ...........
复制代码

   2.通过excel获取数据

 

 

复制代码
import xlrd,unittest
from ddt import ddt,data,unpack
from selenium import webdriver

def get_data(file_name):
    rows =[]
    book = xlrd.open_workbook(file_name)
    sheet = book.sheet_by_index(0)
    for row_idx in range(1,sheet.nrows):
        rows.append(sheet.row_values(row_idx,0,sheet.ncols))
    return rows

@ddt
class SearchExcelDDT(unittest.TestCase):
    .......
    #get the data from specified excel file by calling the get_data function
    @data(*get_data("testdata.csv"))
    @unpack
    def test_search(self,search_value,expected_count):
        ...........
复制代码

  @data将调用get_data()方法去读取外部Excel文件,并将数据逐行返回给@data

如果要从数据库中获取数据,也可以修改get_data()方法,通过DB相关的库来连接数据库、SQL查询来获取测试数据

posted on   HathawayLee  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示