1、unittest是Python的标准库里的模块,所以在创建测试方法时,需直接导入unittest即可

2、unittest框架的六大模块:

测试用例TestCase

测试套件TestSuit:测试用例的集合,管理所有测试用例

测试执行:TestRun:

测试报告TestReport:测试结果的汇总报告

钩子方法:setUp()初始化方法和tearDown()收尾方法

断言:验证运行结果和期望值是否相等,相等就PASS

3、初期示例代码

  1. #coding=utf-8
  2. import unittest
  3. class Dog():
  4. def __init__(self,name):
  5. self.name=name
  6. def getName(self):
  7. return self.name
  8. class TestDog(unittest.TestCase):#测试类,要继承unittest(属于Python的标准库)模块的TestCase
  9. def setUp(self): #钩子方法,初始化
  10. self.d=Dog('wang') #实例化类
  11. print u'初始化'
  12. def test_getName001(self):#测试用例的方法名必须以test_开头
  13. print u'我是测试用例001'
  14. print self.d.getName()
  15. assert self.d.getName() in 'wang'#assert是python语言里的断言
  16. '''验证getName方法的正确性'''
  17. self.assertEqual(self.d.getName(),'wang')#判断运行结果和期望值是否一致。assertEqual(a,b)是unittest的断言,验证ab的值是否一致,
  18. def test_getName002(self):
  19. print u'我是测试用例002'
  20. def tearDown(self): #钩子方法,收尾。钩子方法是每个用例执行时都会执行
  21. print u'收尾'
  22. if __name__=='__main__':#if成立的话,表示当前这个模块是正在运行的主程序
  23. unittest.main(verbosity=2)#1、调用unittest.main()启动自动测试,
  24. # 2、verbosity的值是2表示打印的结果是有详细的信息

打印结果:

  1. Ran 2 tests in 0.004s
  2.  
  3. OK
  4. 初始化
  5. 我是测试用例001
  6. wang
  7. 收尾
  8. 初始化
  9. 我是测试用例002
  10. 收尾

4、钩子方法没必要每次执行,怎样实现只执行一次,setUp()和tearDown()是用类方法@classmethod

  1. #!/usr/bin/env.python
  2. #-*-coding:utf-8-*-
  3. import unittest
  4. from selenium import webdriver
  5.  
  6. class Baidu(object):
  7.  
  8. def login(self):
  9. pass
  10.  
  11. class BaiduTest(unittest.TestCase):
  12.  
  13. @classmethod
  14. def setUpClass(cls):
  15. cls.driver=webdriver.Firefox()
  16. cls.driver.maximize_window()
  17. cls.driver.implicitly_wait(30)
  18. cls.driver.get('https://www.baidu.com/')
  19.  
  20. def test_01(self):
  21. '''验证不输入账户和密码的提示信息是否正确'''
  22. pass
  23.  
  24. def test_02(self):
  25. '''验证输入用户名,不输入密码的提示信息是否正确'''
  26. pass
  27.  
  28. def test_03(self):
  29. '''验证输入错误用户名的提示信息是否正确'''
  30. self.assertEqual(123,12)
  31.  
  32. @classmethod
  33. def tearDownClass(cls):
  34. cls.driver.quit()
  35.  
  36. if __name__=='__main__':
  37. unittest.main(verbosity=2)

运行的时候,浏览器只打开和关闭了一次,运行结果如下:

  1. test_01 (__main__.BaiduTest)
  2. 验证不输入账户和密码的提示信息是否正确 ... ok
  3. test_02 (__main__.BaiduTest)
  4. 验证输入用户名,不输入密码的提示信息是否正确 ... ok
  5. test_03 (__main__.BaiduTest)
  6. 验证输入错误用户名的提示信息是否正确 ... FAIL
  7.  
  8. ======================================================================
  9. FAIL: test_03 (__main__.BaiduTest)
  10. 验证输入错误用户名的提示信息是否正确
  11. ----------------------------------------------------------------------
  12. Traceback (most recent call last):
  13. File "D:/panda/Python/python_me/week7-5/unit1/test01.py", line 25, in test_03
  14. self.assertEqual(123,12)
  15. AssertionError: 123 != 12
  16.  
  17. ----------------------------------------------------------------------
  18. Ran 3 tests in 11.007s
  19.  
  20. FAILED (failures=1)
  21.  
  22. Process finished with exit code 1

5、测试套件,将测试用例add到测试套件中,执行的时候执行测试套件

  1. #!/usr/bin/env.python
  2. #-*-coding:utf-8-*-
  3. import unittest
  4.  
  5. class Food():
  6. def add(self,a,b):
  7. return a+b
  8.  
  9. class FoodTest(unittest.TestCase):
  10. def setUp(self):
  11. self.f=Food()
  12.  
  13. def test_01(self):
  14. '''测试a,b为整型'''
  15. sum=self.f.add(2,3)
  16. self.assertEqual(sum,5)
  17.  
  18. def test_02(self):
  19. '''测试a浮点数,b为整型'''
  20. sum = self.f.add(2.36, 2)
  21. self.assertEqual(sum,4.36)
  22.  
  23. def tearDown(self):
  24. pass
  25.  
  26. if __name__=='__main__':
  27. suite=unittest.testSuite()
  28. suite.addTests(FoodTest('test_01','test_02'))
  29. unittest.TextTestRunner(verbosity=0).run(suite)

5.1、将suite写到类的方法中,简化执行用例时的代码

  1. #!/usr/bin/env.python
  2. #-*-coding:utf-8-*-
  3. import unittest
  4. from selenium import webdriver
  5.  
  6. class BaiduTest(unittest.TestCase):
  7.  
  8. @classmethod
  9. def setUpClass(cls):
  10. cls.driver=webdriver.Firefox()
  11. cls.driver.maximize_window()
  12. cls.driver.implicitly_wait(30)
  13. cls.driver.get('https://www.baidu.com/')
  14.  
  15. def test_01(self):
  16. '''验证不输入账户和密码的提示信息是否正确'''
  17. pass
  18.  
  19. def test_02(self):
  20. '''验证输入用户名,不输入密码的提示信息是否正确'''
  21. pass
  22.  
  23. def test_03(self):
  24. '''验证输入错误用户名的提示信息是否正确'''
  25. self.assertEqual(123,12)
  26.  
  27. @classmethod
  28. def tearDownClass(cls):
  29. cls.driver.quit()
  30.  
  31. @staticmethod
  32. def suite(testNum):
  33. suite=unittest.TestSuite()
  34. suite.addTest(BaiduTest(testNum))
  35. return suite
  36.  
  37. if __name__=='__main__':
  38. unittest.TextTestRunner(verbosity=2).run(BaiduTest.suite('test_01'))
  1.  

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. Netty入门官方例子

    参考链接:https://blog.csdn.net/wocjy/article/details/78661464 maven依赖: <!-- Netty开始 --> <!-- ht ...

  2. 19个JavaScript简化编码小技巧

    这篇文章适合任何一位基于JavaScript开发的开发者.我写这篇文章主要涉及JavaScript中一些简写的代码,帮助大家更好理解一些JavaScript的基础.希望这些代码能从不同的角度帮助你更好 ...

  3. [Java]手动构建SQL语法树(sql简单无嵌套)并输出与之对应的SQL语句之二

    Entry入口 main中自顶向下手动创建了sql语法树 package com.hy; // 构建SQL语法树 public class Entry { public static void mai ...

  4. 理解Dubbo

    1.Dubbo应用场景 2.Dubbo支持的协议 3.Dubbo性能比较 4.负载均衡策略 5.容错方案 6.Dubbo vs SpringCloud 7.深入Dubbo需要的技能

  5. 技术选型之Docker容器引擎

    https://mp.weixin.qq.com/s?__biz=Mzg3NjAyOTUzMQ==&mid=2247484524&idx=1&sn=ac041bf3e36dda ...

  6. 小D课堂 - 新版本微服务springcloud+Docker教程_汇总

    小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...

  7. centos6.5 内核 :2.6.32 升级内核

    问题:    CentOS 6.5 的内核一般都是2.6,在2.6的内核下,Docker运行会比较卡,所以一般会选择升级到更高版本,本次教程升级版本为4.4.102 一.升级内核 1.查看内核版本 u ...

  8. 学习使用Jmeter做压力测试(一)--压力测试基本概念

    学习使用Jmeter做压力测试(一)--压力测试基本概念 一.性能测试的概念 性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试.负载测试和压力测试都属于性能测 ...

  9. linux 基础 VIM 编辑器

  10. Linux scp 免密码 传输文件

    Linux scp 免密码 传输文件 背景介绍 最近项目是集群化部署(由 node1,node2,node3 三台 CentOS 7.4 的虚拟机构成). 但是,涉及到跨机器同步文件的问题,想通过写s ...