datacollection在自动化测试中的应用

datacollection是规范测试数据的一种方式。叫法其实都无所谓,你也可以给它取其他的名字。它的本质就是利用一个hash,将我们要准备的测试数据字段,提前规范好,包括这个测试模块要用的到测试字段的数量和名称。这样在团队协作过程中便于对方法的理解,避免重复定义。
它其实也是在以前的框架中测试数据和执行代码之间加了一层,我们可以叫它数据控制。这样代码不直接读取测试数据文件中的数据,而是读取这个datacollection中的数据。而datacollection的规范定义,可以保证代码数据控制中的一致性。我这里用ruby来举例说明,大家也可以自己改写成java等。

class MembershipPackageInfo
class << self
    def generate(arg={})
      temp = Hash.new
      # General Information
      temp['Name'] = nil
      temp['Description'] = nil
      temp['Category'] = nil
      temp['Status'] = nil
      temp['Assign_Pass'] = nil
      temp['Pass_Layout'] = nil
      temp['Catalog_Description'] = nil
      temp['Print_Barcode_on_receipt'] = false
      # Deferred Revenue Settings
      temp['Enable_Deferred_Revenue'] = nil
      temp['Revenue_Deferral_Period'] = nil
      # Expiration Information                    
      temp['Valid_Time_Period_after_issue'] = nil
      # options
      temp['Renewable_Membership'] = false

      arg.each do |key,value|
        temp[key] = value
      end
      return temp
    end
  end
end

这就是一个datacollection类,你可以忽略temp[]中括号里的内容,你只需要知道这就是你要定义的测试数据的字段名称,等号右边是你要赋予的初始值。其他内容都是ruby的一些语法,与本文的主题无关,感兴趣的可以自己去查阅资料。而在测试数据文件中定义如下,这里我们用的yaml文件:

package_info:
  package_name: ''
  Description: 'ANE-71495 Description'
  status: 'Open'
  Assign_Pass: 'System-wide'
  Category: 'Common_Category'
  Pass_Layout: 'Common_Use_Pass_Layout'
  Catalog_Description: 'ANE-71495 Catalog Description'
  Enable_Deferred_Revenue: 'Yes'
  Revenue_Deferral_Period: 'Daily'
  Valid_Time_Period_after_issue: 'Monthly'
  Renewable_Membership: true

charge_info:
  charge_name1: 'Common_Fee'
  charge_name2: 'Package_Fixed_Discount'

测试代码中定义方法,给datacollection取值

def get_package_info
  package_info = MembershipPackageInfo::generate
  package_info = $parameters['package_info']
  return package_info
end

$parameters[‘package_info’]是我们框架中取得yaml文件中测试数据的方法,大家根据自己的实际情况来取外部测试数据文件的值。package_info就是得到的测试数据。在外部测试字段的命名要与datacollection中哈希的key值一致。
有时候根据不同的业务场景,测试值会不同。在datacollection中定义好该字段值。

class MembershipChangePackageFeeDetailInfo
class << self
    def generate(arg={})
      temp = Hash.new
      temp['charge_name_lst'] = nil

      arg.each do |key,value|
        temp[key] = value
      end
      return temp
    end
  end
end

在我们的yaml文件中该字段定义了两个值,

charge_info:
  charge_name1: 'Common_Fee'
  charge_name2: 'Package_Fixed_Discount'

在代码定义两个方法分别取得这两个值

def get_common_charge
  charge_info = MembershipChangePackageFeeDetailInfo::generate
  charge_info['charge_name_lst']=$parameters['charge_info']['charge_name1']
  return charge_info
end

def get_fixed_discount_chage
  charge_info = MembershipChangePackageFeeDetailInfo::generate
  charge_info['charge_name_lst']=$parameters['charge_info']['charge_name2']
  return charge_info
end

datacollection看似有点重复,但是可以使得我们的代码更结构化,更规范。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值