自动化:自动化框架、脚本编写总结

  1. web自动化脚本:
    • 层次分明:页面元素层、业务流层、控件层、用例层   //好处:数据驱动、脚本维护方便(如果只是页面的某个元素变化只需要修改元素层内容;如果只是业务逻辑有调整,只要修改业务层内容;如果要增加测试场景,只需在用例处新增输入及预期结果即可) 
  2. 剥离出脚本统一在一个地方维护:
    • 环境信息:ip、port、ssh连接信息、数据库连接信息
    • 帐号密码信息
    • 测试文件/数据:用例中用到的测试文件、测试数据统一放在一个目录,作为公用,其它用例也可一起用,避免准备多份数据占用空间、维护麻烦等
    • 配置信息
    • 大部分脚本要用到的配置或者参数
  3. 一个项目最好要有code、lib、config、testfile等目录,归类存放、维护
    • code:自动化脚本/用例
    • lib:封装的各类公用方法、文件/数据处理方法、业务相关方法等
    • config:配置信息、环境信息、帐号密码信息、url等
    • testfile:测试文件/数据等
  4. 脚本里尽量不要用固定等待的方式,比如要等到某个定时器或者某个异步任务执行完成才进行下一步,不用sleep 60类似的方式!!采用浮动等待的方式(好处:脚本精确等待任务执行完成不会耗时过长;脚本稳定)
    •  示例如下:

    • def wait_until_expect_mgr_status(url, persistent_id, interval=3, max_waittime=10, expect_status='fileOperateSucceedAndReturnPersistentSucceed',after_waittime=0):
          """
          浮动等待http://27.148.167.201/status/get/prefop?persistentId=ahd01066a121cd4c00001b94a7c906651090返回最后一个子任务的status字段为期望值(省去强制等待较长时间的问题)
          :param url: 请求的url
          :param persistent_id: persistet_id
          :param interval: 每个等待周期间隔时间
          :param max_waittime: 最大允许等待的时间
          :param expect_status: status字段的期望值
          :param after_waittime: 字段变为期望值之后,再强制等待的时间,配合“定时器5s查询一次子任务状态,然后更新主任务状态”
          :return: None
          """
          wait_time = 0
          times = int(max_waittime/interval)
          url = url + '?persistentId=' + persistent_id
          print ('请求URL:%s' % url)
          for i in range(0,times):
              rq = requests.get(url)
              get_status = json.loads(rq.text).get('items')[0].get('desc')
              if get_status == expect_status:
                  print u'
      Success. 当前状态(%s)和期望的状态(%s)一致,当前等待总时长:%s' % (get_status, expect_status, wait_time)
                  time.sleep(after_waittime)
                  return
              time.sleep(interval)
              wait_time = wait_time + interval
              print u'当前状态(%s)和期望的状态(%s)不一致,已等待总时长:%s' % (get_status, expect_status, wait_time)
          print u"
      Error. 当前状态(%s)和期望的状态(%s)不一致,已到达允许等待最大时长:%s" % (get_status, expect_status, max_waittime)
          raise AssertionError(u"Fail.")
      View Code

        

  5. 1

  

每天努力一点,每天学习一点。 Keep Moving...
原文地址:https://www.cnblogs.com/channy14/p/12978641.html