一、断言方法

执行用例的过程中,最终用例是否执行通过,是通过判断测试得到的实例结果与预期结果是否相等决定的。unittest框架的TestCase类提供下面这些方法用于测试结果的判断。

  1. -assertEqual(first,second,msg=None)
  2. 断言第一个参数和第二个参数是否相等,如果不相等则测试失败。msg为可选参数,用于定义测试失败时打印的信息。
  1. #test.py
  2. #coding:utf-8
  3.  
  4. from Demo1 import Count
  5. import unittest
  6.  
  7. #测试两个整数相加
  8. class TestCount(unittest.TestCase):
  9.  
  10. def setUp(self):
  11. number=input("please input your number:")
  12. self.number= int(number)
  13.  
  14. def test_case(self):
  15. self.assertEqual(self.number,10,msg='your input number is not 10!~')
  16.  
  17. def tearDown(self):
  18. pass
  19.  
  20. if __name__=='__main__':
  21. unittest.main()

注意:此例需使用python自带的IDLE运行,因为执行过程中需要用户输入

在setUp()方法中要求用户输入一个数,在test_case()中通过assertEqual()比较输入的数据是否等于10,如果不相等则输出msg中定义的提示信息。执行结果如下:

从执行结果看到,输入看一个12,显然不等于10,msg所定义的提示信息告诉我们“your input number is not 10”。

  1. -assertNotEqualfirstsecondmsg=None
  2. assertNotEqual()与assertEqual()相反,他用于断言第一个参数与第二个参数是否不相等,如果相等则测试失败。
  3.  
  4. -assertTrueexpressmsg=None
  5. -assertFalseexpressmsg=None
  6. 测试表达式是true(或False

  

下面这个例子是判断一个数是否为质数,所谓的质数(素数)是指只能被1和他本身整除的数

  1. #count.py
  2. #coding:utf-8
  3.  
  4. #判断质数
  5. def is_prime(n):
  6. if n<=1:
  7. return False
  8.  
  9. for i in range(2, n):
  10. if n % i == 0:
  11. return False
  12.  
  13. else:
  14. return True

创建is_prime()函数用于实现对质数的判断。当得到一个数字n后,首先判断它是否小于或等于1,如果小于或等于1,则直接返回False;如果大于1,若能整除2到其自身之间的任意一个数,则不为质数,返回False,否则返回True;

  1. #test.py
  2. #coding:utf-8
  3.  
  4. from Demo1 import is_prime
  5. import unittest
  6.  
  7. class TestCount(unittest.TestCase):
  8.  
  9. def setUp(self):
  10. number=input("please input your number:")
  11. self.number= int(number)
  12.  
  13. def test_case(self):
  14. self.assertTrue(is_prime(self.number),"the number is not prime")
  15.  
  16. def tearDown(self):
  17. pass
  18.  
  19. if __name__=='__main__':
  20. unittest.main()

在调用is_prime()函数时分别传不同的值来执行测试用例,assertTrue()断言得到的结果为True(或False)

  1. -assertInfirstsecondmsg=None
  2. -assertNotInfirstsecondmsg=None
  3. 断言第一个参数是否在第二个参数中,反过来讲,第二个参数是否包含第一个参数。  
  1. #test.py
  2. #coding:utf-8
  3. import unittest
  4.  
  5. class Test(unittest.TestCase):
  6.  
  7. def setUp(self):
  8. self.a=input("please input string a:")
  9. self.b=input("please input string b:")
  10.  
  11. def test_string(self):
  12. self.assertIn(self.a,self.b,msg='a is not in b')
  13.  
  14. def tearDown(self):
  15. pass
  16.  
  17. if __name__=="__main__":
  18. unittest.main()

这个很好理解,定义字符串a为“hello”,b为“hello world”,通过assertIn判断b是否包含a,如果不包含则打印msg定义的信息。

  1. -assertIsfirstsecondmsg=None
  2. -assertIsNotfirstsecondmsg=None
  3. 断言第一个参数和第二个参数是否为同一对象。
  4.  
  5. -assertIsNoneexprmsg=None
  6. -assertIsNotNoneexprmsg=None
  7. 断言表达式是否为None对象。
  8.  
  9. -assertIsInstance(obj,cls,msg=None)
  10. -assertNotIsInstance(obj,cls,msg=None)
  11. 断言obj是否为cls的一个实例。
  12. unittest中还提供了其他检查比较的方法,因为不常用,所以不再一一介绍。

  

Selenium 2自动化测试实战28(断言方法)的更多相关文章

  1. Selenium 2自动化测试实战3(函数、类和方法)

    一.函数.类和方法1.函数在python中通过def关键字来定义函数 创建一个add()函数,此函数接收两个参数a,b,通过print()打印a+b的结果.调用add()函数,并且上传两个参数3,5给 ...

  2. 《Selenium 2自动化测试实战 基于Python语言》中发送最新邮件无内容问题的解决方法

    虫师的<Selenium 2自动化测试实战 基于Python语言>是我自动化测试的启蒙书 也是我推荐的自动化测试入门必备书,但是书中有一处明显的错误,会误导很多读者,这处错误就是第8章自动 ...

  3. Selenium 2自动化测试实战

    Selenium 2自动化测试实战 百度网盘 链接:https://pan.baidu.com/s/1aiP3d8Y1QlcHD3fAlEj4sg 提取码:jp8e 复制这段内容后打开百度网盘手机Ap ...

  4. Selenium 2自动化测试实战26(unittest单元测试框架)

    一.unittest单元测试框架 1.认识单元测试 1.断言方法 #计算器类 #coding:utf-8 #计算器类 class Count: def __init__(self,a,b): self ...

  5. Selenium 与自动化测试 —— 《Selenium 2 自动化测试实战》读书笔记

    背景 最近在弄 appium,然后顺便发现了 Selenium 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...

  6. Selenium 2自动化测试实战39(Page Object设计模式)

    Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...

  7. Selenium+Python自动化测试实战(2)元素定位

    1.Selenium2 的原理 第一篇分享简单介绍了基于Python开发的Selenium2的环境配置,这篇主要讲一下基本用法.首先讲一下Selenium2的基本原理.基本上知道了这个东西是怎么回事, ...

  8. Selenium 2自动化测试实战35(HTML测试报告)

    HTML测试报告 显然,一份漂亮的测试报告展示自动化测试成果只有一个简单的log文件是不够的.HTMLTestRunner是python标准库unittest单元测试框架的一个扩展,它生成易于使用的H ...

  9. Selenium 2自动化测试实战34(编写Web测试用例)

    编写Web测试用例 1.介绍了unittest单元测试框架,其主要是来运行Web自动化测试脚本.简单的规划一下测试目录:web_demo1/------test_case/------------te ...

随机推荐

  1. 转载 如何使用批处理 动态改变path实现改变JDK版本

    http://www.cnblogs.com/xdp-gacl/p/5209386.html 1 @echo off 2 3 rem --- Base Config 配置JDK的安装目录 --- 4 ...

  2. 十,StatefulSet简介及简单使用

    目录 StatefulSet简介 为什么要用statefulset控制器 简单测试 使用 StatefulSet 创建基础的PV StatefulSet 清单 statefulset管理pod的启停顺 ...

  3. KMP算法详解&&P3375 【模板】KMP字符串匹配题解

    KMP算法详解: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt(雾)提出的. 对于字符串匹配问题(such as 问你在abababb中有多少个 ...

  4. MySQL中主键的选择与磁盘性能

    偶然看到了“Fotolog: Scaling the World\'s Largest Photo Blogging Community”,才发现很多数据库的优化其实道理都很简单,至高境界是当你面对问 ...

  5. 题解 【POJ1157】LITTLE SHOP OF FLOWERS

    先把题目意思说一下: 你有F束花,编号为\(1\)~\(F\)(\(1<=F<=100\)),\(V\)个花瓶,编号为\(1\) ~\(V\)(\(1<=V<=100\)), ...

  6. 题解 【NOIP2010】关押罪犯

    [NOIP2010]关押罪犯 Description S城现有两座监狱,一共关押着N名罪犯,编号分别为1~N.他们之间的关系自然也极不和谐.很多罪犯之间甚至积怨已久,如果客观条件具备则随时可能爆发冲突 ...

  7. 部署LVS-NAT模式调度器

    创建集群服务器 [root@proxy ~]# yum -y install ipvsadm [root@proxy ~]# ipvsadm -A -t -s wrr 添加真实服务器 [root@pr ...

  8. java-并发编程之fork/join框架

    Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架.Fork/Join框架要完成两件事情: 1.任务分 ...

  9. learning armbian steps(10) ----- armbian 源码分析(五)

    在上一节的分析当中,已经知道了uboot kernel的源代码路径及编译选项,以及rootfs的版本,相关信息如下所示: ## BUILD CONFIGURATION Build target: Bo ...

  10. HNOI2004 树的计数 | HNOI2008 明明的烦恼

    题目链接:戳我 prufer序列的问题. prufer序列和无根树是一一对应的.而且在树中度数为k的点,在prufer序列中的出现次数为\(k-1\)次. 根据有限制次数的可重复元素的排列计数公式,我 ...