川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

测试程序的异常优化及Retry优化

作者:川石学院 日期:2022-04-28 11:18:56 点击数:

  一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“测试程序的异常优化及Retry优化”。

UiAutomator API详解:UiSelector类介绍(一)(图1)

  1.异常优化

  考虑以下情形。

  def testLogin(){

  #从Excel文件中读入测试数据,比如:Jerry/123456

  #继续后续测试

  }

  def teardown(){

  #从数据库表中删除的读入的数据,比如:Jerry/123456

  ...

  }

  比如测试程序在继续后续测试的时候出现了一个异常,比如元素没有找到,系统会自动退出,而不去执行teardown方法,也就是说数据库中的数据没有得到清除,这样如果下一次测试同样的case,采用同样的测试数据就会使测试程序发生脏数据异常,为了解决这个问题,可以通过使用Python的try- except来捕获异常,并且将所有的方法封装在一个类中。在util.py中封装一个class类。

  (1)封装定位API

  案例4-75:封装定位API。

  def find_element_by_id(self,driver,mystr):

  try:

  return driver.find_element_by_id(mystr)

  except NoSuchElementException:

  print("find_element_by_id 没有发现元素"+mystr)

  这样如果系统通过by_id方式找不到某个元素,测试程序会抛出“find_element_by_id 没有发现元素"+mystr(mystr即定位的id号)”信息,然后继续下面的程序。调用的时候采用下面的方法。

  def setUp(self):

  d = drivers()

  self.driver=d.driver

  self.fd=findby()

  self.fd.implicitly_wait(self.driver,5)

  …

  def test_XXX():

  self.fd.find_element_by_id(self.driver,"kw").clear()

  其他的定位方式也采取同样的做法。

  (2)封装操作API

  案例4-76:封装操作API。

  def send_keys(self,elenment,send_string):

  try:

  elenment.send_keys(send_string)

  except:

  print("send_keys操作失败")

  当执行send_keys发生异常,系统抛出“send_keys操作失败”信息,然后继续下面的程序。调用的时候采用下面的方法。

  self.fd.send_keys(self.fd.find_element_by_id(self.driver,"kw"),inputstring)

  2.Retry优化

  UI自动化测试程序的最大问题之一在于由于网络不稳定,从而造成页面元素不是不存在,而是还没有被调出来(虽然Selenium提供了显隐式等待,实际工程中会发现这两个方法是有缺陷的,并且好些浏览器根本就不支持)。在这里进行如下的优化。

  案例4-77:Retry优化。

  def find_element_by_id(self,driver,mystr):

  try:

  return driver.find_element_by_id(mystr)

  except NoSuchElementException:

  for i in range(2):

  try:

  time.sleep(2000)

  return driver.find_element_by_id(mystr)

  except NoSuchElementException:

  print("尝试第"+str(i+1)+"次失败")

  print("尝试第3次失败")

  print("find_element_by_id 没有发现元素"+mystr)

  当程序找不到元素的时候,等待2秒钟,继续获取,如果还是没有取到继续等待,在这里设置了3次的等待机会,如果没有报异常信息。


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-04-28 11:18:56
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-04-28 11:18:56
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-04-28 11:18:56
  • 建筑工程专业朱同学成功转行为软件测试人!2022-04-28 11:18:56
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-04-28 11:18:56
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-04-28 11:18:56
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-04-28 11:18:56
  • 文科生转行软件测试照样拿下高薪15K!2022-04-28 11:18:56
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-04-28 11:18:56
  • 毕业1年,迷茫的他最终选择转行软件测试2022-04-28 11:18:56