基于unittest集成你的selenium2测试
时间:2022-05-07
本文章向大家介绍基于unittest集成你的selenium2测试,主要内容包括测试用例、简单示例、关键代码说明、主入口说、代码组织说明、总结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
python单元测试框架(The Python Unit Testing Framework)简称PyUnit,是JUnit的python版本,自python2.1版本后,PyUnit已经成为了Python的标准库。下面我们就如何把unitest应用到python selenium2自动化测试中进行分享。
测试用例
单元测试是由一系列的测试用例(Test Cases)构成。测试用例是被设置用来检测独立场景的集合。在PyUnit中,unittest模块中的TestCase类代表测试用例。
TestCase类的实例是可以完全运行所有的方法和可选的初始化(setUp)及清理(tearDown)方法的对象。
TestCase实例的测试代码必须是包含一个或多个测试方法,简单说,它可以单独运行或与其他任意数量的用例共同运行
简单示例
# 将以下代码保存到first_webdriver.py中
#-*- coding:utf-8 -*-
__author__ = u'苦叶子'
from selenium import webdriver
import unittest import HTMLTestRunner
import sys
from time import sleep
reload(sys)
sys.setdefaultencoding("utf-8")
class BaiduTest(unittest.TestCase):
"""百度首页搜索测试用例"""
def setUp(self):
self.driver = webdriver.Ie()
self.driver.implicitly_wait(30)
self.base_url = u"http://www.baidu.com"
def test_baidu_search(self):
driver = self.driver
print u"开始[case_0001]百度搜索"
driver.get(self.base_url)
# 验证标题
self.assertEqual(driver.title, u"百度一下,你就知道")
driver.find_element_by_id("kw").clear()
driver.find_element_by_id("kw").send_keys(u"开源优测")
driver.find_element_by_id("su").click()
sleep(3)
# 验证搜索结果标题
self.assertEqual(driver.title, u"开源优测_百度搜索")
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
testunit = unittest.TestSuite()
testunit.addTest(BaiduTest('test_baidu_search'))
# 定义报告输出路径
htmlPath = u"testReport.html"
fp = file(htmlPath, "wb")
runner = HTMLTestRunner.HTMLTestRunner(stream=fp,
title=u"百度测试",
description=u"测试用例结果")
runner.run(testunit)
fp.close()
关键代码说明
- 在上例代码中,我们的测试用例BaiduTest继承了unittest.TestCase。
- 在初始化方法setUp中,初始化了webdriver示例和隐性等待设置,并初始化了百度首页url。该方法自动执行。
- 在清理方法中tearDown中,退出了webdriver。该方法自动执行。
- test_baidu_search方法是我们主要的测试方法,在该方法中进行了一下动作。
主入口说
- 先定义一个测试套件集,然后将用例集添加至套件中。
- 我们使用了unittest第三方测试报告模块HTMLTestRunner(该模块不是标准库,需要自己去下载,请参考前面几篇的文章),用以自动生产HTML格式的测试报告。
如何运行上述代码
# 将上述代码保存至first_unit_test.py中
# 在命令行中输入以下命令
python first_unit_test.py
代码组织说明
总结
今天我们就unittest怎么和selenium测试进行结合做了初步的分享,请大家深入理解该示例,并实际动手练习代码。
- BZOJ3585: mex(主席树)
- 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)
- 02.LoT.UI 前后台通用框架分解系列之——灵活的菜单栏
- 05.LoT.UI 前后台通用框架分解系列之——漂亮的时间选择器
- 06.LoT.UI 前后台通用框架分解系列之——浮夸的图片上传
- 07.LoT.UI 前后台通用框架分解系列之——轻巧的文本编辑器
- 07.LoT.UI 前后台通用框架分解系列之——强大的文本编辑器
- 洛谷P3358 最长k可重区间集问题(费用流)
- 08.LoT.UI 前后台通用框架分解系列之——多样的Tag选择器
- iOS多线程——RunLoop与GCD、AutoreleasePool你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
- iOS多线程——你要知道的RunLoop都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里
- iOS网络——AFNetworking AFHttpSessionManager源码解析
- iOS网络——SDWebImage SDImageDownloader源码解析你要知道的NSURLSession都在这里
- iOS缓存 NSCache详解及SDWebImage缓存策略源码分析你要知道的NSCache都在这里
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- YII框架常用技巧总结
- PHP连接SQL Server的方法分析【基于thinkPHP5.1框架】
- PHP切割汉字的常用方法实例总结
- Laravel Validator 实现两个或多个字段联合索引唯一
- php实现的顺序线性表示例
- pytorch快速搭建神经网络_Sequential操作
- PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
- Yii框架引入coreseek分页功能示例
- 使用keras内置的模型进行图片预测实例
- PHP convert_cyr_string()函数讲解
- 在keras中model.fit_generator()和model.fit()的区别说明
- 浅谈matplotlib 绘制梯度下降求解过程
- Ajax+PHP实现的分类列表框功能示例
- keras实现图像预处理并生成一个generator的案例
- Django+RestFramework API接口及接口文档并返回json数据操作