Selenium快速入门知识5-测试程序优化之异常优化

203 阅读1分钟
原文链接: zhuanlan.zhihu.com

异常优化

考虑以下情形。

def testLogin(){

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

#继续后续测试

}

def teardown(){

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

...

}

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

(1)封装定位API

案例:封装定位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

案例:封装操作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)

下一课我们将介绍:Retry优化