自动化测试框架--关键字驱动、数据驱动组合使用

关键字驱动是实现代码与脚本的分离,将元素的基础操作封装为一个类。

数据驱动是在关键字驱动的基础上,实现对同一脚本,用多组数据进行测试,提高代码复用性和扩展性。

本例主要实现将多组数据存入excle文件中,通过读取excle文件,进行多组数据测试。

实现文件读取需下载openpyxl包,实现数据驱动,需下载ddt包

优点与缺点

优点:

 ①在应用程序开发的同时就可以同步建立测试脚本,而且当应用功能变动时,只需要修改业务功能部分的脚本;②利用模型化的设计,避免重复的脚本,减少建立或维护脚本的成本;③测试输入数据,验证数据和预期的测试结果与脚本分开,存放在另外的数据文件里,利于测试人员修改和维护。

缺点:

 ①有一定的python语言功底;②每个脚本都会对应多个数据文件,这些数据文件需要根据脚本的功能类别存放在各自的目录中,增加了使用的复杂性;③测试人员除了需要根据具体测试数据维护相应的测试计划,还要将这些数据写入各个需求不同的数据文件中;④在编辑数据文件时,必须注意测试脚本所要求的传输格式,否则会在处理脚本时产生错误。比如本文中要求必须是xlsx扩展名的文件。

1.数据读取

import openpyxl
#应用
#三大组件 工作薄 工作表  单元格

class getdata:
    def get(self):
      wk=openpyxl.load_workbook("testdata.xlsx")
      sheet1=wk["Sheet1"]
    # value=sheet1.cell(row=3,column=1).value
    # print(value)

    #存储多个数据
    #字典列表
    #excle表格中数据全部度出来
      dataList=[]

      for row in range(2,sheet1.max_row+1):
         rowdata={}
         for column in range(1,sheet1.max_column+1):
            key=sheet1.cell(1,column).value
            value=sheet1.cell(row,column).value
            rowdata[key]=value
         dataList.append(rowdata)

      return dataList

if __name__=='__main__':
    data=getdata().get()
    print(data)

2.元素操作方法定义

from selenium import webdriver


class Library:
    #封装动作

    def open_brower(self,brower):
        #首字母大写
        brower=brower.capitalize()
        self.driver=getattr(webdriver,brower)()
        # if brower=='chrom':
        #     self.driver=webdriver.Chrome()
        # elif brower=='firefox':
        #     self.driver = webdriver.Chrome()
        # else:
        #     self.driver = webdriver.Ie()

    def load_url(self,url):

       self.driver.get(url)

    # 定位元素
    def locator(self,loc):
        return self.driver.find_element(*loc)

    def input(self,loc,value):
      #输入
      self.locator(loc).send_keys(value)

    def click(self,loc):
        self.locator(loc).click()

3.测试

import time
import unittest

from ddt import ddt,data
from selenium import webdriver
from selenium.webdriver.common.by import By
from getdata import getdata


#实现循环输入,传递多个值
#数据驱动
from library import Library


@ddt
class test(unittest.TestCase):

    @data(*getdata().get())
    def test_01(self,data):
        print(data)
        library=Library()
        library.open_brower("Firefox")
        library.load_url("https://passport.ctrip.com/user/login?")
        time.sleep(2)
        library.input((By.XPATH,".//*[@id='nloginname']"),data["username"])
        time.sleep(3)
        library.input((By.XPATH, ".//*[@id='npwd']"), data["passwd"])
        time.sleep(2)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
关键字驱动自动化测试是一种测试方法,它将测试逻辑按照关键字进行分解,并形成一个数据文件,其中关键字对应封装的业务逻辑。关键字驱动的主要思想是将脚本与数据、界面元素名与测试内部对象名、测试描述与具体实现细节分离。\[2\] 在关键字驱动自动化测试中,测试脚本与业务和数据分离,这样可以节省大量对脚本的维护工作。测试脚本描述了一个测试事例应该做什么,而不是如何做。测试脚本通过调用测试用例来具体执行测试业务逻辑。\[3\] 关键字驱动自动化测试框架具有以下优势:首先,它可以根据界面的变化更新对应的关键字对象,而不需要重新录制脚本,因此在受界面影响方面具有明显的优势。其次,关键字驱动自动化测试框架可以提高自动化测试脚本的维护效率,因为脚本与业务和数据分离,减少了对脚本的维护工作量。\[1\] 总之,关键字驱动自动化测试是一种将测试逻辑按照关键字进行分解的测试方法,它可以提高自动化测试脚本的维护效率,并且可以根据界面的变化更新对应的关键字对象。 #### 引用[.reference_title] - *1* *2* *3* [什么是关键字驱动自动化测试](https://blog.csdn.net/A_Kaka/article/details/107519421)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值