unittest模块常用属性

1、 unittest.TestCase类:所有的测试用例类继承的基类

定义一个测试用例类,需要继承TestCase,比如:

class BaiduTest(unittest.TestCase):

2、 unittest.main():使用这个可以方便的将一个测试模块变为可直接运行的测试脚本,main()方法使用TestLoader类来搜索所有包含在该模块中以test命名开头的测试方法,并自动执行它们。执行方法的默认顺序是:根据ASCII码的顺序加载测试用例,数字与字母的顺序为:0-9,A-Z,a-z。

3、 unittest.TestSuite():用来创建测试套件

4、 unittest.TextTestRunner():通过该类的run()方法可运行suite组装的测试用例。

5、 unittest.defaultTestLoader():通过该类下的discover()方法可以自动根据测试目录匹配查找到的测试用例文件,并将查找到的测试用例组装到测试套件,因此可以直接通过run()方法执行discover。例如:

discover = unittest.defaultTestLoader.discover(test_dir, pattern=’test_*.py’)

第一个参数是测试用例目录,第二个参数是查找以test_开头的py文件

6、 unittest.skip():装饰器,当运行用例时,有些用例可能不想执行等,可以用装饰器暂时屏蔽该条测试用例。一种常见的用法就是比如说想调试某一个测试用例,想先屏蔽其他用例,就可以用装饰器屏蔽。

a) @unittest.skip(reason):skip(reason)这个装饰器是无条件跳过装饰器所装饰的case,并说明跳过测试的原因

b) @unittest.skipIf(reason):skipIf(condition, reason):条件为真时,跳过装饰的case,并说明跳过原因。

c) @unittest.skipUnless(reason):skipUnless(condition, reason):条件为假时,跳过装饰的测试,并说明跳过测试的原因

d) @unittest.expecteFailure():expecteFailure():测试标记为失败

TestCase类常用属性

setUp():setUp()方法是用于测试用例执行前的初始化工作。如测试用例需要访问数据库,可以在setUp()中建立数据库连接并初始化,需要登录web,可以先实例化浏览器等。

tearDown():用于测试用例执行之后的善后工作,比如关闭数据库连接,关闭浏览器等。

assertEqual(a, b, [msg=测试失败时打印的信息]):断言a,b两个值是否相等,相等则测试通过。

assertNotEqual(a, b, [msg=测试失败时打印的信息]):断言a,b两个值是否相等,不相等则测试通过.

assertTrue(x, [msg]):断言x是否True,true则测试通过

assertFalse(x, [msg]):断言x是否False,False则测试通过

assertIs(a, b, [msg]):断言a是否是b,是则测试通过

assertNotIs(a, b, [msg]):断言a是否是b,不是则测试通过

assertIsNone(x, [msg]):断言x是否是None,是None则测试通过

assertIsNotNone(x, [msg]):断言x是否是None,是None则测试通过

assertIn(a, b, [msg]):断言a是否在b中,是则测试通过

assertNotIn(a, b, [msg]):断言a是否在b中,不在则测试通过

assertIsInstance(a, b, [msg]):断言a是否是b的一个实例,是则测试通过

assertNotIsInstance(a, b, [msg]):断言a是否是b的一个实例,不是则测试通过

举例:

classTestSub(unittest.TestCase):defsetUp(self):"""为测试方法初始化,每个case运行前执行一次"""self.a= 20self.b= 10

deftearDown(self):"""清理函数,每个case执行后执行一次"""

pass

deftest_sub(self):"""验证减法"""result= self.a -self.b

self.assertEqual(result,10)deftest_add(self):"""验证加法"""result= self.a +self.b

self.assertEqual(result,30)

TestSuite类常用属性

addTest():将测试用例添加到测试套件中,比如:

#将test_baidu模块下的BaiduTest类下的test_baidu_serach和test_baidu_login测试用例添加到套件

suite = unittest.TestSuite()

suite.addTest(TestSub ("test_sub"))

suite.addTest(TestSub ("test_add "))

runner = unittest.TextTestRunner()

runner.run(suite)

TextTestRunner类常用属性

run()方法是运行测试套件中的测试用例,参数是一个测试套件,例如:

runner = unittest.TextTestRunner()

runner.run(suite)

if __name__ == '__main__':

# 可以直接调用main方法执行测试用例

# unittest.main()

# 也可以像下面这样先创建测试套件,然后将测试用例放入套件,再使用run方法运行套件

test_dir = './'

discover = unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')

runner = unittest.TextTestRunner()

runner.run(discover)

综合实例

实例1:

#coding=utf-8

"""create on 2019.12.26

@author:suyang

Project:使用unittest编写测试用例"""

importunittest#定义测试类,继承TestCase的所有方法

classTest(unittest.TestCase):#重写父类的setUp方法10

defsetUp(self):

self.number= input("Enter a number:")

self.number=int(self.number)#定义第一个测试用例

deftest_case1(self):print(self.number)

self.assertEqual(self.number,10, "Your input is not 10")#定义第二个测试用例

@unittest.skip("暂时跳过用例2的测试")deftest_case2(self):print(self.number)

self.assertEqual(self.number,20, "Your input is not 20")deftest_case3(self):

result= self.number + 10self.assertEqual(result,30, "Your input is not 20")deftearDown(self):print('test over')#3种方法都可以执行测试用例

if __name__ == '__main__':#可以直接调用main方法执行测试用例

#unittest.main()

#先创建一个测试套件,然后将用例依次用addTest方法加入测试套件中,再用run方法执行用例

#suit = unittest.TestSuite()

#suit.addTest(Test('test_case1'))

#suit.addTest(Test('test_case2'))

#suit.addTest(Test('test_case3'))

#runner = unittest.TextTestRunner()

#runner.run(suit)

#也可以像下面这样先创建测试套件,然后将测试用例放入套件,再使用run方法运行套件

test_dir = './'discover= unittest.defaultTestLoader.discover(test_dir, pattern='test_*.py')

runner=unittest.TextTestRunner()

runner.run(discover)

实例2:

#coding=utf-8

"""created on 2019.12.26

@author:suyang

Project:测试百度搜索"""

from selenium importwebdriverimportunittestimporttimeclassBaiduTest(unittest.TestCase):defsetUp(self):#pass

self.driver =webdriver.Chrome()#隐性等待时间为30秒

self.driver.implicitly_wait(30)

self.base_url= "https://www.baidu.com"

deftest_baidu(self):

driver=self.driver

driver.get(self.base_url+'/')

driver.find_element_by_id("kw").clear()

driver.find_element_by_id("kw").send_keys("unittest")

driver.find_element_by_id("su").click()

time.sleep(3)

title=driver.title

self.assertEqual(title, u"unittest_百度搜索")deftearDown(self):

self.driver.quit()if __name__ == '__main__':

unittest.main()

unittest安装教程_unittest模块使用方法相关推荐

  1. unittest安装教程_Unittest单元测试框架

    一,前言 1,单元测试 软件测试一般按阶段划分为:单元测试,集成测试,系统测试.单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证. 单元测试中单元的含义,单元就是人为规定 ...

  2. unittest安装教程_unittest框架与自动化测试环境的搭建

    1.unittest框架简介 首先以selenium IDE录制的一段代码为例(脚本的录制请参考其他文档),说明unittest框架的使用. 图 1 要使用unittest框架,首先需要import ...

  3. Ubuntu14.04 ROS Indigo安装教程,以及卸载方法

    Ubuntu14.04 ROS Indigo安装教程,以及卸载方法 原创 2017年01月25日 15:22:45 标签: ROS / ubuntu / 机器人 13957 ROS (Robot Op ...

  4. 135k代驾安装教程+功能模块源码+前端源码

    简介: 135k代驾安装教程+功能模块源码+前端源码 网盘下载地址: http://kekewangLuo.net/pOYRFCVcFvC0 教程: 微信公众号配置: 登录服务号,注意:必须是服务号, ...

  5. 树莓派数据库的安装教程及基本使用方法(从0开始教你安装数据库)

    树莓派数据库的安装教程及基本使用方法(从0开始教你安装数据库) 树莓派数据库的安装 在终端中输入 sudo apt-get install mysql-server (注意:此过程中没有需要你设置密码 ...

  6. 安装向导因错误而提前结束_【软件安装】SIMATIC STEP7 V5.6中文版安装教程及错误解决方法...

    1 安装要求 1. 只能在win10系统上安装,win7和XP系统是不能安装的,win10系统建议安装win10专业版的. 2. 电脑配置,250G硬盘空间,4G运行内存,CPU至少2.1HZ频率. ...

  7. 在M1芯片的MAC安装Capture One Pro的安装教程中文直装方法 Capture One Pro21 M1版本

    文章目录 Capture One Pro 21 for Mac前言 Capture One Pro 21 for Mac(RAW图像处理应用)适配M1芯片 一. Capture One 21 Pro ...

  8. VMware12安装虚拟机教程、Ubuntu16.04安装教程、常见问题解决方法

    虚拟机.Linux操作系统介绍及下载地址 虚拟机VMware Workstation Pro 12.1.0 for Windows下载地址: http:// www. vmware.com/cn/ ( ...

  9. Microsoft project 2013安装教程(含激活方法)

    目录 一.介绍 二.安装教程 三.激活 一.介绍 Microsoft project 2013中文版是由微软推出的一款项目管理软件,软件将可用性.功能和灵活性等完美地融合在一起,可以有效提升办公人员的 ...

最新文章

  1. APMServ 5.2.0 服务器平台搭建工具
  2. python处理字符串效率_Python字符串搜索效率
  3. [aspnetcore.apidoc]一款很不错的api文档生成工具
  4. ElasticSearch外部版本控制
  5. 机器学习介绍jc01
  6. c语言求100∑k=1k 30,C语言程序设计〔第三章〕.ppt
  7. 27个提升效率的iOS开源库推荐
  8. yum更新php版本,yum安装的php升级到7.0版本
  9. 汉王考勤 连接mysql_汉王考勤管理软件打开时出现:连接数据错误,请确认数据库服务器信息是否有误。这样该怎样解决?...
  10. 企业资源计划(ERP)原理与实践第一章
  11. 猿大师VLC播放程序播放RTSP实时视频提示“系统找不到指定文件”
  12. PostgreSQL之如何敲开PG的大门?
  13. win2008服务器蓝屏如何修复,win2008r2 老是蓝屏重启。
  14. 贝壳采集器: 电话邦 数据采集
  15. 公众号如何运营?教你几招超实用的公众号运营方法
  16. Rstudio 修改RMD快捷键快速插入Python代码块
  17. 作为程序员你脱发吗?
  18. Chapter7 循环神经网络-2
  19. 基于ADI-ADAU1452-DSP音频开发
  20. java计算机毕业设计高校多媒体设备运维管理系统服务端(附源码、数据库)

热门文章

  1. 编写程序计算长方体的体积python_编写程序,计算圆柱体、球体、正方体和长方体的表面积和体积...
  2. PCA9306—I2C总线和SMBus双向电平转换器
  3. 数字逻辑 异或 同或
  4. 聊聊我在第三方支付公司的经历
  5. 宝塔7.9最新企业版免授权无后门
  6. 五、jQuery 对表单、表格的操作(走过路过瞅瞅吧)
  7. SMLT中增加新的语言
  8. 中南大学计算机组成原理,中南大学计算机组成原理作业答案
  9. php hex加密解密方法,php hex加密解密函数使用例子
  10. PLC控制柜从上到下布局是强电到弱电还是反过来?