前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Selenium2+python自动化20-引入unittest框架

Selenium2+python自动化20-引入unittest框架

作者头像
上海-悠悠
发布2018-04-08 14:19:35
7300
发布2018-04-08 14:19:35
举报
代码语言:javascript
复制
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import NoAlertPresentException
import unittest, time, re
class Baidu(unittest.TestCase):
     def setUp(self):
         self.driver =webdriver.Firefox()
         self.driver.implicitly_wait(30)
 self.base_url = "http://www.baidu.com/"
 self.verificationErrors = []
         self.accept_next_alert = True
 def test_baidu(self):
         driver = self.driver
         driver.get(self.base_url + "/")
        driver.find_element_by_id("kw").send_keys("selenium webdriver")
        driver.find_element_by_id("su").click()
         driver.close()
 def is_element_present(self,how, what):
         try: self.driver.find_element(by=how, value=what)
 except NoSuchElementException, e: return False
 return True
 def is_alert_present(self):
 try: self.driver.switch_to_alert()
 except NoAlertPresentException, e: return False
 return True
 def close_alert_and_get_its_text(self):
 try:
           alert = self.driver.switch_to_alert()
           alert_text = alert.text
 if self.accept_next_alert:
               alert.accept()
 else:
               alert.dismiss()
           return alert_text
        finally: self.accept_next_alert = True
 def tearDown(self):
          self.driver.quit()
          self.assertEqual([], self.verificationErrors)
if __name__ == "__main__":
     unittest.main()

啪啪啪上来就是一串代码,是不是有点懵!,下面小编来解释一下: class Baidu(unittest.TestCase): Baidu 类继承 unittest.TestCase 类,从TestCase 类继承是告诉 unittest 模块的方式,这是一个测试案例。 def setUp(self): self.driver = webdriver.Firefox() self.base_url = "http://www.baidu.com/" setUp 用于设置初始化的部分,在测试用例执行前,这个方法中的函数将先被调用。这里将浏览器的调用和 URL 的访问放到初始化部分。 self.verificationErrors = [] 脚本运行时,错误的信息将被打印到这个列表中 self.accept_next_alert = True 是否继续接受下一个警告。

代码语言:javascript
复制
def test_baidu(self):
    driver = self.driver
    driver.get(self.base_url + "/")
    driver.find_element_by_id("kw" ).send_keys( "seleniumwebdriver")
    driver.find_element_by_id("su" ).click()

test_baidu 中放置的就是我们的测试脚本了,这部分我们并不陌生;因为我们执行的脚本就在这里

代码语言:javascript
复制
def is_element_present(self, how, what):
try : self.driver.find_element(by=how, value= what)
except NoSuchElementException, e: return False
return True
is_element_present 函数用来查找页面元素是否存在,try...except....为 python 语言的异常捕捉。
is_element_present 函数在这里用处不大,通常删除,因为判断页面元素是否存在一般都加在testcase 中。

def is_alert_present(self):
    try: self.driver.switch_to_alert()
    except NoAlertPresentException, e: return False
    return True

对弹窗异常的处理

代码语言:javascript
复制
def close_alert_and_get_its_text(self):
    try:
        alert = self.driver.switch_to_alert()
        alert_text = alert.text
        if self.accept_next_alert:
            alert.accept()
        else:
            alert.dismiss()
        return alert_text
     finally : self.accept_next_alert = True

关闭警告以及对得到文本框的处理,if 判断语句前面已经多次使用,并不陌生;try....finally...为 python 的异常处理。 def tearDown(self): self.driver.quit() self.assertEqual([], self.verificationErrors) tearDown 方法在每个测试方法执行后调用,这个地方做所有测试用例执行完成的清理工作,如退出 浏览器等。 self.assertEqual([], self.verificationErrors) 这个是难点,对前面 verificationErrors 方法获得的列表进行比较;如查 verificationErrors 的列表 不为空,输出列表中的报错信息 if __name__ == "__main__": unittest.main() unitest.main()函数用来测试 类中以 test 开头的测试用例

这样一一分析下来,我们对unittest 框架有了初步的了解。运行脚本,因为引入了unittest 框架,

所以控制台输出了用例的执行个数、时间以及是否ok 等信息。

本篇只是初步对 unittest 的框架进行了分析, 还有许细节将放在后面章节进行讨论, 例如python 的异常处理机制等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档