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
有路过的大佬知道更好的方式,请不吝赐教!