zoukankan      html  css  js  c++  java
  • UI自动化测试:测试异步场景的临时处理

    一、测试场景

      在做UI自动化测试时,经常会遇到测试场景需要等很久才能继续下一步,或者测试状态需要等很久才能有结果,这时需要用到进程、线程等python的高级用法来处理。但此时编程水平有限时,只能暂时采用等待状态变化的办法,再进行下一步自动化测试,等有更好的方法在更新。

      有路过的同仁知道更好的方法,请不吝赐教!

      1、以手机端酒店订单自动取消的场景为例(10分钟倒计时结束后自动取消):

    二、测试过程

      通常的做法是在当前页面等待10分钟,然后刷新页面获取订单状态,这种方法直接粗暴,如下面的方式:

    def test_autocancel_hotel( driver):
        """酒店订单未支付时,10分钟后自动取消订单"""
        # -------------------测试步骤 -------------------
        # 在订单详情页直接等待10分钟
        time.sleep(605)
        # 刷新页面
        driver.refresh()
        time.sleep(3)
        driver.find_element(By.XPATH, "//div[text()='已取消']")

       这种强制等待10分钟的方式不可行,因为appium在等待超过一定时间,没有接收到操作请求时会关闭测试的App。

      只能改成过一段时间去刷新页面,然后获取订单状态,虽然能解决问题,但感觉不是最好的方法,如下:

    def test_autocancel_hotel(driver):
        """酒店订单未支付时,10分钟后自动取消订单"""
        # -------------------测试步骤 -------------------
        # 在订单详情页等待10分钟,订单自动取消
        used_time = 0
        timeout = 25
        while used_time < timeout:
            time.sleep(28)
            # 刷新页面
            driver.refresh()
            time.sleep(3)
            try:
                driver.find_element(By.XPATH, "//div[text()='已取消']")
                break
            except:
                used_time += 1

      有路过的大佬知道更好的方式,请不吝赐教!

  • 相关阅读:
    Django的templates(模板)
    Django的urls(路由)
    Markdown中实现折叠代码块
    图片上传2
    Comparator 排序
    Serializable 序列化为文件
    统计连续签到的方法
    Serializable 序列化为字符串 base64
    Serializable 序列化使用限制
    Serializable 剔除某些不想保存的字段 transient
  • 原文地址:https://www.cnblogs.com/zdx20/p/15207339.html
Copyright © 2011-2022 走看看