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的更多相关文章

  1. unittest单元测试框架总结

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  2. python实例编写(6)--引入unittest测试框架,构造测试集批量测试(以微信统一管理平台为例)

    ---恢复内容开始--- 一.python单元测试实例介绍 unittest框架又叫PyUnit框架,是python的单元测试框架. 先介绍一个普通的单元测试(不用unittest框架)的实例: 首先 ...

  3. unittest单元测试框架详解

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  4. Selenium+Python ---- 免登录、等待、unittest单元测试框架、PO模型

    1.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

  5. unittest单元测试框架

    unittest单元测试框架 概述: 单元测试框架主要用来完成以下三件事: 提供用例组织与执行:当测试用例只有几条时,可以不必考虑用例的组织,但是当用例达到成百上千条时,大量的用例堆砌在一起,就产生了 ...

  6. unittest单元测试框架简单说明

    unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果.今天笔者 ...

  7. python利用unittest测试框架组织测试用例的5种方法

    利用unittest测试框架可以编写测试用例,执行方式分两大类:利用main方法和利用testsuite,其中利用测试套件来组织测试用例可以有4种写法. 在此之前,先了解几个概念 TestCase:所 ...

  8. Python接口测试实战3(下)- unittest测试框架

    如有任何学习问题,可以添加作者微信:lockingfree 课程目录 Python接口测试实战1(上)- 接口测试理论 Python接口测试实战1(下)- 接口测试工具的使用 Python接口测试实战 ...

  9. Python+selenium之简单介绍unittest单元测试框架

    Python+selenium之简单介绍unittest单元测试框架 一.unittest简单介绍 unittest支持测试自动化,共享测试用例中的初始化和关闭退出代码,在unittest中最小单元是 ...

  10. unittest单元测试框架总结(转载)

    转载:https://www.cnblogs.com/yufeihlf/p/5707929.html unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该 ...

随机推荐

  1. Linux停止被占用的端口

    查找被占用的端口:netstat -lnp|grep 80 查看80端口被那些服务占用. kill掉该进程 kill -9 5574 然后在去查看一下80被占用的情况netstat -lnp|grep ...

  2. mybatis延迟加载(Collection)

    上篇讲了assocation,同样我们也可以在一对多关系配置的结点中配置延迟加载策略. 结点中也有 select 属性,column 属性. 需求: 完成加载用户对象时,查询该用户所拥有的账户信息. ...

  3. nginx环境准备

    一.环境调试确认 1.四项确认 确认公网已连通. 确认yum源可用. 确认iptables已经关闭. 确认selinux已经关闭. a.确认是否连通公网. ping www.baidu.com b.确 ...

  4. P2983 [USACO10FEB]购买巧克力

    P2983 [USACO10FEB]购买巧克力 题解 注意题目开 long long 贪心策略:价格从低到高,买够为止 反证:若剩下的有一个K”,比K小,那么交换,稳赚不赔 所以,在买K之前,所有比他 ...

  5. SQLServer 简单数据拆分

    --1. 旧的解决方法(sql server 2000)   create table tb(id int,value varchar(30)) insert into tb values(1,'aa ...

  6. 自定义有焦点的TextView实现广告信息左右一直滚动的跑马灯效果

    import android.content.Context; import android.text.TextUtils; import android.util.AttributeSet; imp ...

  7. JMeter4.0以上 分布式测试报错 "server failed start Listen failed on port"

    使用JMeter4.0做分布式测试的是否,我的电脑作为肉鸡(执行机),双击jmeter-server.bat后显示失败 Found ApacheJMeter_core.jarUsing local p ...

  8. php中应用redis

    下载软件包wget https://codeload.github.com/phpredis/phpredis/zip/develop mv develop phpredis.zip 解压unzip ...

  9. vue项目中使用组件化开发

    最近在使用vue-cli结合webpack打包工具开发一个后台管理系统,使用vue难免需要运用组件化思想,而这也正是vue的一大特点. 在之前做的vue项目中,稍微有一点组件化的思想,可能是对组件化不 ...

  10. Android开发 互相调用模式之提供扩展类

    此种方法适用于:比如你要让Android做一些事情,这些事用不到任何资源,在Android下用纯代码就能实现它,这样就可以在Android下写好,将它封装成一个方法,打成包按照下面的方式丢给Unity ...