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自动化测试用例的开发与执行,该 ...
随机推荐
- Linux 多线程按照线程顺序打印字符
#include <stdio.h> #include <pthread.h> #include <unistd.h> ; pthread_mutex_t mute ...
- SRS之SrsRtmpConn::stream_service_cycle详解
首先使用 obs 推流符合如下流程:参考自 Hanvision Makito X cann't publish to SRS.. FFMPEG: C/S: Handshake C: ConnectAp ...
- How to change the button text of <input type=“file” />?
How to change the button text of <input type=“file” />? Simply <label class="btn btn-p ...
- spring整合mybatis(非代理方式)【我】
首先创建要给 maven 的war项目 不用代理的方式: 如果不适用Mapper代理的方式,配置就非常简单: 首先是pom文件(以下配置文件包含其他多余内容,仅供参考): <project xm ...
- 六十九:flask上下文之线程隔离的g对象的使用
保存全局对象的g对象g对象是在整个flask应用运行期间都是可以使用的,并且也是和request一样,是线程隔离的,这个对象是专门用来存放开发者自己定义的一些数据,方便在整个flask程序中都可以使用 ...
- 使用NLog的最佳实践
1. Logger应该在每个类中初始化为静态 创建一个新的Logger类是有有开销的,因为它需要获取一些锁和分配对象和内存. 因此推荐像下面一样使用Logger: namespace MyNamesp ...
- spring-boot集成5:集成jrebel实现热加载
Why Jrebel? 使用jrebel可以方便的实现spring-boot项目的热部署,直接reload更改的class,无需重启,提升开发效率. 1.安装jrebel插件 在idea中安装jreb ...
- 分享一款架子鼓游戏【drum】
视频演示: 电脑版和安卓版都有,没有ios版. 适合想练架子鼓,但是还没买架子鼓的朋友.可以先当做游戏来练练节奏感...下载如下: 电脑版下载>> 手机安卓版下载>>
- 01vscode配置git
一.准备工作 必须保证已安装git,相关安装git的教程很多,这里就不进行描述. 通过命令:git --version 查看git版本. 二.git config 配置 通过git config 配置 ...
- 【HANA系列】【第五篇】SAP HANA XS的JavaScript API详解
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第五篇]SAP HANA XS ...