【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)

整理不易,希望对各位学习软件测试能带来帮助这里是引用

软件测试知识持续更新

  • 第六章 引入 unittest 单元测试框架
    • 第一节、selenium IDE 介绍
      • 6.1.1 selenium IDE 安装
      • 6.1.2 selenium IDE 界面介绍
      • 6.1.3 selenium IDE 录制脚本
      • 6.1.4 selenium IDE 编辑脚本
    • 第二节、引入 unittest 框架
    • 第三节、unittest 单元测试框架解析
      • python 基础知识补充:
      • 框架分析
        • 编写测试用例
        • 组织用例集
        • 运行测试集
      • python 基础知识补充:
    • 第四节、批量执行测试用例
  • 总结:
  • 未完待续

第六章 引入 unittest 单元测试框架

第一节、selenium IDE 介绍

selenium IDE 是 selenium 家族的中的一员,它是嵌入到 firefox 浏览器的一个插件,这里之所以要介绍 selenium IDE 是因为我们可以将 selenium IDE 录制的脚本转换成不同语言脚本,有助于帮助我们尽快熟悉脚本语言以及测试框架。

6.1.1 selenium IDE 安装

通过 firefox 浏览器访问 selenium 下载页面:http://docs.seleniumhq.org/download/
在 selenium IED 下载介绍部分,点击版本号链接,如图 :
【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第1张图片

firefox 浏览器将自动识别需要下载的 selenium IED 插件,如图 ,点击 Install Now 按钮,安
装 selenium IED 插件。

【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第2张图片

安装完成后重启 firefox 浏览器,通过菜单栏“Tools(工具)”—> selneium IDE 可以打开,或通过 Ctrl+Alt+S 快捷键打开。
【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第3张图片

6.1.2 selenium IDE 界面介绍

【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第4张图片

为了方便简洁,我们就按照上图的数字标记介绍 selenium IDE 界面各个部分人作用:
1—文件(File):创建、打开和保存测试案例和测试案例集。
编辑(Edit):复制、粘贴、删除、撤销和选择测试案例中的所有命令。
Options (设置): 用于设置 seleniunm IDE。
**2—**用来填写被测网站的地址。
**3—**速度控制:控制案例的运行速度。
**4—**运行所有:运行一个测试案例集中的所有案例。
**5—**运行:运行当前选定的测试案例。
**6—**暂停/恢复:暂停和恢复测试案例执行。
7—|单步:可以运行一个案例中的一行命令。
**8—**录制:点击之后,开始记录你对浏览器的操作。
**9—**案例集列表。
**10—**测试脚本;table 标签:用表格形式展现命令及参数。source 标签:用原始方式展现,默认是 HTML 语言格式,也可以用其他语言展示。
**11—**查看脚本运行通过/失败的个数。
**12—**当选中前命令对应参数。
**13—**日志/参考/UI 元素/Rollup
日志:当你运行测试时,错误和信息将会自定显示。
参考:当在表格中输入和编辑 selenese 命令时,面板中会显示对应的参考文档。
UI 元素/Rollup:参考帮助菜单中的,UI-Element Documentation。

6.1.3 selenium IDE 录制脚本

打 开 selenium IDE 录 制 按 钮 默 认 为 启 动 状 态 , 在 地 址 栏 中 输 入 要 录 制 的 URL ( 如 ,
http://www.baidu.com),脚本录制完成,关闭录制按钮,如图

【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第5张图片

6.1.4 selenium IDE 编辑脚本

selenium IDE 为我们录制的脚本不是100%符合我们的需求的,所以,编辑录制的脚本是必不可少的工作。

  1. 编辑一行命令或注释。
    在 Table 标签下选中某一行命令,命令由 command、Target、value 三部分组成。可以对这三部分内容那进行编辑。
    【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第6张图片

  2. 插入命令
    在某一条命令上右击,选择“insert new command”命令,就可以插入一个空白,然后对空白行进程编辑。

【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第7张图片

  1. 插入注解
    以上面同样的方式右击选择“insert new comment”命令插入注解空白行,本行内容不被执行,可以帮助我们更好的理解脚本,插入的内容以紫色字体显示。
    【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第8张图片

  2. 移动命令或注解
    有时我们需要移动某行命令的顺序,我们只需要左击鼠标拖动到相应的位置即可。

【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第9张图片

  1. 定位辅助
    当 selenium IDE 录制脚本时,它会存储额外的信息,支持用户挑选其他格式的定位器来代替默认格
    式的定位器,这种特殊性对于学习定位器很有用。
    【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第10张图片

我们可以选择其他的命令来代替“name=btnG” 命令,当然,脚本依然是可以运行的。
关于 selenium IDE 的更多使用技巧不在不是本书的讨论重点,请读者参考其资料进行学习。

第二节、引入 unittest 框架

通过 seleinium IDE 完成脚本的录制之后,可以将其导出为加了 python unittest 单元测试框架的相应脚本。如图 6.10 。
【软件测试】自动化测试战零基础教程——Python自动化从入门到实战(七)_第11张图片

将脚本导出,保存为 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 框架包。

class Baidu(unittest.TestCase):

Baidu 类继承 unittest.TestCase 类,从 TestCase 类继承是告诉 unittest 模块的方式,这是一个测试案例。

def setUp<

你可能感兴趣的:(自动化测试,软件测试,基础,python,自动化,单元测试,功能测试,selenium)