unittest之一框架、suite
1、unittest是Python的标准库里的模块,所以在创建测试方法时,需直接导入unittest即可
2、unittest框架的六大模块:
测试用例TestCase
测试套件TestSuit:测试用例的集合,管理所有测试用例
测试执行:TestRun:
测试报告TestReport:测试结果的汇总报告
钩子方法:setUp()初始化方法和tearDown()收尾方法
断言:验证运行结果和期望值是否相等,相等就PASS
3、初期示例代码
#coding=utf-8
import unittest
class Dog():
def __init__(self,name):
self.name=name
def getName(self):
return self.name
class TestDog(unittest.TestCase):#测试类,要继承unittest(属于Python的标准库)模块的TestCase类
def setUp(self): #钩子方法,初始化
self.d=Dog('wang') #实例化类
print u'初始化'
def test_getName001(self):#测试用例的方法名必须以test_开头
print u'我是测试用例001'
print self.d.getName()
assert self.d.getName() in 'wang'#assert是python语言里的断言
'''验证getName方法的正确性'''
self.assertEqual(self.d.getName(),'wang')#判断运行结果和期望值是否一致。assertEqual(a,b)是unittest的断言,验证a和b的值是否一致,
def test_getName002(self):
print u'我是测试用例002'
def tearDown(self): #钩子方法,收尾。钩子方法是每个用例执行时都会执行
print u'收尾'
if __name__=='__main__':#if成立的话,表示当前这个模块是正在运行的主程序
unittest.main(verbosity=2)#1、调用unittest.main()启动自动测试,
# 2、verbosity的值是2表示打印的结果是有详细的信息
打印结果:
Ran 2 tests in 0.004s OK
初始化
我是测试用例001
wang
收尾
初始化
我是测试用例002
收尾
4、钩子方法没必要每次执行,怎样实现只执行一次,setUp()和tearDown()是用类方法@classmethod
#!/usr/bin/env.python
#-*-coding:utf-8-*-
import unittest
from selenium import webdriver class Baidu(object): def login(self):
pass class BaiduTest(unittest.TestCase): @classmethod
def setUpClass(cls):
cls.driver=webdriver.Firefox()
cls.driver.maximize_window()
cls.driver.implicitly_wait(30)
cls.driver.get('https://www.baidu.com/') def test_01(self):
'''验证不输入账户和密码的提示信息是否正确'''
pass def test_02(self):
'''验证输入用户名,不输入密码的提示信息是否正确'''
pass def test_03(self):
'''验证输入错误用户名的提示信息是否正确'''
self.assertEqual(123,12) @classmethod
def tearDownClass(cls):
cls.driver.quit() if __name__=='__main__':
unittest.main(verbosity=2)
运行的时候,浏览器只打开和关闭了一次,运行结果如下:
test_01 (__main__.BaiduTest)
验证不输入账户和密码的提示信息是否正确 ... ok
test_02 (__main__.BaiduTest)
验证输入用户名,不输入密码的提示信息是否正确 ... ok
test_03 (__main__.BaiduTest)
验证输入错误用户名的提示信息是否正确 ... FAIL ======================================================================
FAIL: test_03 (__main__.BaiduTest)
验证输入错误用户名的提示信息是否正确
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:/panda/Python/python_me/week7-5/unit1/test01.py", line 25, in test_03
self.assertEqual(123,12)
AssertionError: 123 != 12 ----------------------------------------------------------------------
Ran 3 tests in 11.007s FAILED (failures=1) Process finished with exit code 1
5、测试套件,将测试用例add到测试套件中,执行的时候执行测试套件
#!/usr/bin/env.python
#-*-coding:utf-8-*-
import unittest class Food():
def add(self,a,b):
return a+b class FoodTest(unittest.TestCase):
def setUp(self):
self.f=Food() def test_01(self):
'''测试a,b为整型'''
sum=self.f.add(2,3)
self.assertEqual(sum,5) def test_02(self):
'''测试a浮点数,b为整型'''
sum = self.f.add(2.36, 2)
self.assertEqual(sum,4.36) def tearDown(self):
pass if __name__=='__main__':
suite=unittest.testSuite()
suite.addTests(FoodTest('test_01','test_02'))
unittest.TextTestRunner(verbosity=0).run(suite)
5.1、将suite写到类的方法中,简化执行用例时的代码
#!/usr/bin/env.python
#-*-coding:utf-8-*-
import unittest
from selenium import webdriver class BaiduTest(unittest.TestCase): @classmethod
def setUpClass(cls):
cls.driver=webdriver.Firefox()
cls.driver.maximize_window()
cls.driver.implicitly_wait(30)
cls.driver.get('https://www.baidu.com/') def test_01(self):
'''验证不输入账户和密码的提示信息是否正确'''
pass def test_02(self):
'''验证输入用户名,不输入密码的提示信息是否正确'''
pass def test_03(self):
'''验证输入错误用户名的提示信息是否正确'''
self.assertEqual(123,12) @classmethod
def tearDownClass(cls):
cls.driver.quit() @staticmethod
def suite(testNum):
suite=unittest.TestSuite()
suite.addTest(BaiduTest(testNum))
return suite if __name__=='__main__':
unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite('test_01'))
unittest之一框架、suite的更多相关文章
- unittest单元测试框架总结
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)
---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...
- unittest单元测试框架详解
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型
1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
- unittest单元测试框架
unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...
- unittest单元测试框架简单说明
unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...
- python利用unittest测试框架组织测试用例的5种方法
利用unittest测试框架可以编写测试用例,执行方式分两大类:利用main方法和利用testsuite,其中利用测试套件来组织测试用例可以有4种写法. 在此之前,先了解几个概念 TestCase:所 ...
- Python接口测试实战3(下)- unittest测试框架
如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...
- Python+selenium之简单介绍unittest单元测试框架
Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...
- unittest单元测试框架总结(转载)
转载:https://www.cnblogs.com/yufeihlf/p/5707929.html unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该 ...
随机推荐
- MySQL_(Java)【事物操作】使用JDBC模拟银行转账向数据库发起修改请求
MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC向数据库中插入(insert)数据 传送门 MySQL_(Java)使用JDBC向数据库中删除(d ...
- linux shell 值coredump suid_dumpable和 gdb解析coredump文件
可以设置产生coredump文件,设置dump文件命名非格式,生成dump文件的路径: linux # set suid_dumpable on if [ -e /proc/sys/kernel/su ...
- HR问“你目前有几个offer”,聪明人会怎么说?
点击上方“程序员江湖”,选择“置顶或者星标” 你关注的就是我关心的! 一个朋友和我聊天,说起自己最近被虐的面试经历.他985毕业,工作3年,看中了一家月薪1.5万的工作,准备跳槽.虽然在北京不算高 ...
- LeetCode 90. 子集 II(Subsets II)
题目描述 给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: [1,2,2] 输出: [ [2], [1], [1,2,2 ...
- 【好书推荐】9、安卓Andorid编程吐血整理100+本
点开即可
- python pandas(ix & iloc &loc)
python pandas(ix & iloc &loc) loc——通过行标签索引行数据 iloc——通过行号索引行数据 ix——通过行标签或者行号索引行数据(基于loc和iloc ...
- Enetity Framework 加载关联数据后,循环问题
通过ef查询关联数据后,出现无限循环情况,在实体中将属性加上[Newtonsoft.Json.JsonIgnore] . [IgnoreDataMember] 就ok了. 我是查询后,用json转换 ...
- WebService:asp.net类库中添加WebService引用出现问题解决方法
ylbtech-WebService:asp.net类库中添加WebService引用出现问题解决方法 1.返回顶部 1. 在Web项目内添加WebService的引用是件很简单的事情,今天在类库中添 ...
- 在发布ASP.NET网站的时候,出现state server错误
错误信息如下: 在发布ASP.NET网站的时候,出现state server错误: Server Error in '/' Application. ------------------------- ...
- C# lock 为什么要设置成只读
首先给出MSDN的定义: lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断.这是通过在代码块运行期间为给定对象获取互斥锁来实现的. 先来看看执行过程,代码示例如下: 假设线程A先执行, ...