day25-关键字驱动

自动化测试框架的概念

  • 使用框架可以提高自动化测试代码的可复用性、可维护性和可扩展性。
  • 框架设计比较灵活,并没有通用的标准来规定框架必须具备什么结构或功能,框架的目的只有一个,就是提高测试效率,降低测试成本。

自动化测试框架的两大核心功能:驱动测试、辅助测试。

  • 驱动测试
    • 数据驱动(DDT)
    • 关键字驱动(KDT)
    • 页面驱动(POM)
  • 辅助测试
    • 数据管理
    • 报告管理
    • 配置管理
    • 日志管理

数据驱动

  • 将测试代码和测试数据分离,一般用于一个测试场景需要多个不同的测试数据的条件下
  • 通过数据驱动测试(有多少条测试数据,测试就会执行多少次)
  • 典型的应用:unittest的ddt模块

关键字驱动

如果所有测试操作都用一个表达式来表示,应该怎么表示

关键字驱动的表达式:object.action(parameters)

  • 主打易用性,将测试代码、测试业务和数据相分离,灵活性最高。
  • 使用时只考虑三个问题
    • 对谁做(object)
    • 做什么(action)
    • 参数(parameters)
import time


class Keyword:
    @classmethod
    def goto(cls, driver, *args):
        if len(args) >= 2 and args[0] == 'goto':
            driver.get(args[1])
            return True
        else:
            print('参数错误')
            return False

    @classmethod
    def send(cls, driver, *args):
        if len(args) >= 2 and args[0] == 'send':
            if args[1].startswith('id'):
                driver.find_element('id', args[1][3:]).send_keys(args[2])
            else:
                driver.find_element('xpath', args[1][6:]).send_keys(args[2])
            return True
        else:
            print('参数错误')
            return False

    @classmethod
    def onclick(cls, driver, *args):
        if len(args) >= 2 and args[0] == 'onclick':
            if args[1].startswith('id'):
                driver.find_element('id', args[1][3:]).click()
            else:
                driver.find_element('xpath', args[1][6:]).click()
            return True
        else:
            print('参数错误', args[1][6:])
            return False

    @classmethod
    def checkout(cls, driver, *args):
        if len(args) >= 2 and args[0] == 'checkout':
            if args[1].startswith('id'):
                driver.find_element('id', args[1][3:]).click()
            else:
                driver.find_element('xpath', args[1][6:]).click()
            return True
        else:
            print('参数错误', args[1][6:])
            return False

    @classmethod
    def delay(cls, driver, *args):
        if len(args) >= 2 and args[0] == 'delay':
            time.sleep(int(args[1]))
            return True
        else:
            print('参数错误')
            return False

    @classmethod
    def close(cls, driver, *args):
        driver.quit()
        return True

在这里插入图片描述

def run_case_text(driver):
    rows = Util.get_data_line()
    for row in rows:
        data = row.split('#')
        print(f'正在运行{row}')
        if hasattr(Keyword, data[0]):   # 判断Keyword类中是否有目标属性 如 goto

            action = getattr(Keyword, data[0])  # 获取目标属性
            result = action(driver, *data)

            if not result:
                print('命令失败')
                break
            else:
                print('命令成功')

通过以上方法就是关键字驱动,判断关键字是否为能解析的属性,然后根据的对应的关键字做出对应的操作

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值