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

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

原文地址:https://www.cnblogs.com/zdx20/p/15207339.html