学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本。相信不少新手学习selenium 也是从IED 开始的。

IDE学习参考:

菜鸟学自动化测试(一)----selenium IDE

借助IED 录制脚本

将脚本导出,保存为baidu.py ,通过python IDLE编辑器打开。如下:

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 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()

加入unittest框架后,看上去比我们之前见的脚本复杂了很多,除了中间操作浏览器的几行,其它都看不懂,不要急,我们来分析一下~!

框架分析           

import  unittest  

相想使用unittest框架,首先要引入unittest 包,这个不多解释。

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

是否继续接受下一下警告(字面意思,没找到解释!)

 def test_baidu(self):driver = self.driverdriver.get(self.base_url + "/") driver.find_element_by_id("kw").send_keys("selenium webdriver") driver.find_element_by_id("su").click()

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

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函数用来查找页面元素是否存在,在这里用处不大,通常删除。

因为判断页面元素是否存在一般都加在testcase中。

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

关闭警告和对得到文本框的处理,如果不熟悉python的异常处理和if 语句的话,请去补基础知识,这里不多解释。

def tearDown(self):self.driver.quit()self.assertEqual([], self.verificationErrors)

  tearDown 方法在每个测试方法执行后调用,这个地方做所有清理工作,如退出浏览器等。

  self.assertEqual([], self.verificationErrors) 是个难点,对前面verificationErrors方法获得的列表进行比较;如查verificationErrors的列表不为空,

输出列表中的报错信息。

  而且,这个东西,也可以将来被你自己更好的调用和使用,根据自己的需要写入你希望的信息。(rabbit 告诉我的)

if __name__ == "__main__":   unittest.main()

unitest.main()函数用来测试 类中以test开头的测试用例

执行结果      

  这样一一分析下来,我们对unittest 框架有了初步的了解。运行脚本,因为引入了unittest 框架,所以控制台输出了脚本执行情况的信息。

>>> ========================= RESTART ================================
>>>
.
----------------------------------------------------------------------
Ran 1 test in 10.656sOK
>>> 

很帅吧!? 后面将以unittest 为基础,向新的征程进发~!

转载于:https://www.cnblogs.com/Raul2018/p/9359105.html

selenium-webdriver(python) (十六) --unittest 框架相关推荐

  1. Selenium WebDriver + python 自动化测试框架

    目标 组内任何人都可以进行自动化测试用例的编写 完全分离测试用例和自动化测试代码,就像写手工测试用例一下,编写excel格式的测试用例,包括步骤.检查点,然后执行自动化工程,即可执行功能自动化测试用例 ...

  2. selenium webdriver (python)的基本用法一

    阅在线 AIP 文档: http://selenium.googlecode.com/git/docs/api/py/index.html 目录 一.selenium+python 环境搭建..... ...

  3. selenium webdriver (python) 第一版PDF

    前言 如果你是一位有python语言基础的同学,又想通过python+ selenium去实施自动化,那么你非常幸运的找到了这份文档,我也非常荣幸能为你的自动化学习之路带来一丝帮助. 其实,我在sel ...

  4. 测开系列Selenium Webdriver Python(21)--元素定位2

    以上学习的是element的基本属性和方法,那么验证点添加的技巧和方式是什么呢?我们知道自动化的过程就是人的手工测试的过程,在手工测试中需要人来判断业务是否达到需求要求,那么在自动化脚本中就要加入程序 ...

  5. python中的UnitTest框架

    一.UnitTest框架介绍 框架说明: 1.框架英文单词framework 2.为解决一类事情的功能集合 〉需要按照框架的规定(套路)去书写代码 什么是UnitTest框架? 概念:UnitTest ...

  6. python webdriver点击指令_测开系列Selenium Webdriver Python(20)--Webdriver运行原理

    Webdriver运行原理 转帖请注明出处!谢谢 在开发Webdriver的自动化脚本过程中,Webdriver后台在创建WebDriver实例的过程中,先确认浏览器的原生组件中是否存在可匹配的版本. ...

  7. Linux运行webdriver,linux - 在chrome中运行Selenium WebDriver python绑定

    我在使用Selenium时遇到了问题. 对于我的项目,我必须使用Chrome. 但是,在使用Selenium启动它后,我无法连接到该浏览器. 出于某种原因,Selenium无法单独找到Chrome. ...

  8. Python单元测试及unittest框架用法实例解析

    例题取用登录模块:代码如下 def login_check(username,password):''' 登录校验的函数:param username:账号:param password: 密码:re ...

  9. selenium webdriver python 元素操作

    常用操作 click 点击某个元素 driver.find_element_by_id("su").click() clear driver.find_element_by_id( ...

最新文章

  1. 【xamarin + MvvmCross 从零开始】六、模拟器的配置与连接
  2. Bitmap基本概念及在Android4.4系统上使用BitmapFactory的注意事项
  3. jmeter--轻量级接口自动化测试框架
  4. 基于Linux的虚拟主机搭建
  5. 【计蒜客 - 蓝桥训练】欧拉函数(数学,数论,模板)
  6. bzoj1034题解
  7. 亚马逊上海人工智能研究院:深度图模型实习生
  8. jq执行2次同样的方法怎么让第一次执行的不触发_你不知道的CMS GC
  9. 【Docker】Docer安装MySQL 8 并且远程登录
  10. 线上阿里云mysql慢_MySQL · 案例分析 · RDS MySQL线上实例insert慢常见原因分析-阿里云开发者社区...
  11. python实数符号_下列格式化符号中,用来表示浮点实数的是()。 (6.0分)_学小易找答案...
  12. 狮子鱼社区团购系统团长推广二维码不显示,以及选择地址失败的解决方案
  13. 5G/NR 5G核心网(5GC)之网络功能和实体
  14. linux里面查找替换命令,Linux常用命令(一)————查找和替换
  15. QT实现加载百度离线地图
  16. cmake错误:Could not find a configuration file for package “Eigen3“
  17. 解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设
  18. webpack前端应用之基础打包
  19. harmonyos能装app吗,如何优雅地开发HarmonyOS APP应用
  20. 2017年计算机考研408操作系统真题(客观题)

热门文章

  1. Java之构造器和构造方法的使用和意义
  2. 使用Git进行代码管理的心得
  3. 关于mysql的表名/字段名/字段值是否区分大小写的问题
  4. 第2章 基本的TCP套接字
  5. 世界32条谣言,你被骗了多少?
  6. div样式调整.txt
  7. 用verilog语言写的任意整数的分频器
  8. 总统先生,一路走好!
  9. JS浮点数运算Bug的解决办法
  10. 4923: [Lydsy1706月赛]K小值查询 平衡树 非旋转Treap