UnitTest框架
时间:2019-02-27
本文章向大家介绍UnitTest框架,主要包括UnitTest框架使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. UnitTest框架
1.1 什么是框架?
说明:
1. 框架英文单词FrameWork;
2. 为解决一类事情的功能集合;
1.2 什么是UnitTest框架?
概念:UnitTest框架是专门用来进行执行代码测试的框架;
1.3 为什么使用UnitTest框架?
1. 能够组织多个用例去执行
2. 提供丰富的断言方法
3. 提供丰富的日志与测试结果
2. UnitTest核心要素
1. TestCase
2. TestSuite
3. TextTestRunner
4. Fixture
2.1 TestCase
说明:(翻译:测试用例)一个TestCase就是一条测试用例;
使用:
1. 导包:import unittest --> 导入unitest框架
2. 继承:unittest.TestCase --> 新建测试类继承unittest.TestCase
提示:
1). 测试用例:在自动化测试中,一条用例就是一个完整的测试流程;
2). 测试方法名称命名必须以test开头;
(原因:unittest.TestCase类批量运行的方法是搜索执行test开头的方法)
2.2 TestSuite
说明:(翻译:测试套件)多条测试用例集合在一起,就是一个TestSuite;
使用:
1. 实例化: suite=unittest.TestSuite()
(suite:为TestSuite实例化的名称)
2. 添加用例:suite.addTest(ClassName("MethodName"))
(ClassName:为类名;MethodName:为方法名)
3. 添加扩展:suite.addTest(unittest.makeSuite(ClassName))
(搜索指定ClassName内test开头的方法并添加到测试套件中)
提示:
1). 一条测试用例(.py)内,多个方法也可以使用测试套件
2). TestSuite需要配合TextTestRunner才能被执行
2.3 TextTestRunner
说明:(翻译:测试执行)是用来执行测试用例套件
使用:
1. 实例化: runner=unittest.TextTestRunner()
(runner:TextTestRunner实例化名称)
2. 执行: runner.run(suite)
(suite:为测试套件名称)
2.4 Fixture
说明:是一个概述,对一个测试用例环境的搭建和销毁就是一个Fixture;
使用:
1. 初始化(搭建):def setUp(self) --> 首先执行
(setUp:此方法继承于unittest.TestCase)
2. 结束(销毁): def tearDown(self) --> 最后执行
(tearDown:此方法继承于unittest.TestCase)
提示:
1. 必须继承unittest.TestCase类,setUp、tearDown才是一个Fixture;
2. setUp:一般做初始化工作,比如:实例化浏览器、浏览器最大化、隐式等待设置
3. tearDown:一般做结束工作,比如:退出登录、关闭浏览器
4. 如果一个测试类有多个test开头方法,则每个方法执行之前都会运行setUp、结束时运行tearDown
3.1 操作步骤分析:
1. 导包 import unittest
2. 新建测试类并继承unittest.TestCast
3. 新建一个Fixture(setUp、tearDown)
4. 新建登录方法
5. if __name__ == '__main__':
6. unittest.main()执行
3.2 总结-代码实现
import unittest
from time import sleep
from selenium import webdriver
class TestLoginOut(unittest.TestCase):
def setUp(self):
self.driver=webdriver.Firefox()
url = "http://localhost/iwebshop/"
self.driver.get(url)
self.driver.implicitly_wait(10)
self.driver.maximize_window()
print("setUp")
def test_login(self):
driver=self.driver
driver.find_element_by_link_text("登录").click()
driver.find_element_by_css_selector("input[alt*='邮箱']").send_keys("admin")
driver.find_element_by_css_selector("input[alt*='密码']").send_keys("123456")
driver.find_element_by_css_selector(".submit_login").click()
sleep(3)
driver.find_element_by_css_selector(".reg").click()
def tearDown(self):
sleep(2)
self.driver.quit()
print("tearDown")
if __name__ == '__main__':
# 调用main方法执行unitetest内所有test开头方法
unittest.main()
4. defaultTestLoader
说明:
使用unittest.defaultTestLoader()类,通过该类下面的discover()方法自动搜索指定目录下指定开头
的.py文件,并将查找到的测试用例组装到测试套件;
用法:
test_dir = './'
disconver = unittest.defaultTestLoader.discover(test_dir, pattern='iweb_*.py')
(test_dir为要指定的目录 ./为当前目录;pattern:为查找的.py文件的格式 )
运行:
runner=unittest.TextTestRunner()
runner.run(disconver)
5.1 defaultTestLoader与TestSuite区别
1. TestSuite可以添加TestCase中所有test开头的方法和添加指定的test开头方法;
2. defaultTestLoader搜索指定目录下指定开头.py文件,并添加TestCase内所有test开头的方法,不能指定添加方法;
提示:defaultTestLoader属于TestSuite另一种实现方式;
- JPA的多表复杂查询:详细篇
- 尝试使用Memcached遇到的狗血问题
- Enumerable#Zip 实现一下
- 更新自己,不要影响其他人
- 【译】Spring官方教程:Spring Boot整合消息中间件RabbitMQ
- [实录]解决Migrator.Net 小bug
- Jenkins Pipeline插件十大最佳实践!
- Spring Cloud Hystrix的请求合并
- JQuery JCshare 0.1 分享插件
- Java中的即时编译(Just-in-time compilation)
- 无尽的忙碌换来幸福的日子
- 消费者驱动的微服务契约测试套件:Spring Cloud Contract
- 自己做的一个小程序 可采集、导出、模板、配置
- 分布式消息队列 RocketMQ 源码分析 —— Message 拉取与消费(上)
- 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 数组属性和方法