转载地址:https://blog.csdn.net/qq_39247153/article/details/81082313

前言

在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。

用unittest组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:

assertEqual、assertIn、assertTrue

基本断言方法

基本的断言方法提供了测试结果是True还是False。所有的断言方法都有一个msg参数,如果指定msg参数的值,则将该信息作为失败的错误信息返回。

序号 断言方法 断言描述
1 assertEqual(arg1, arg2, msg=None) 验证arg1=arg2,不等则fail
2 assertNotEqual(arg1, arg2, msg=None) 验证arg1!=arg2,相等则fail
3 assertTrue(expr, msg=None) 验证expr是true,如果为false,则fail
4 assertFalse(expr, msg=None)

验证expr是false,如果为true,则fail

5 assertIs(arg1, arg2, msg=None)

验证arg1=arg2是同一个对象,不是则fail

6 assertIsNot(arg1, arg2, msg=None) 验证arg1、arg2不是同一个对象,是则fail
7 assertIsNone(expr, msg=None) 验证expr是None,不是则fail
8 assertIsNotNone(expr,msg=None) 验证expr不是None,是则fail
9 assertIn(arg1, arg2, msg=None) 验证arg1是arg2的子串,不是则fail
10 assertNotIn(arg1, arg2, msg=None) 验证arg1不是arg2的子串,是则fail
11 assertIsInstance(obj, cls, msg=None) 验证obj是cls的实例,不是则fail
12 assertNotIsInstance(obj, cls, msg=None) 验证obj不是cls的实例,是则fail

一、简单案例

1.下面写了4个case,其中第四个是执行失败的

# coding:utf-8
import unittest
class Test(unittest.TestCase):def test01(self):"'判断a == b'"a = 1b = 1self.assertEqual(a, b)def test02(self):"'判断a in b'"a = "hello"b = "hello world!"self.assertIn(a, b)def test03(self):"'判断a is True'"a = Trueself.assertTrue(a)def test04(self):"'失败案例'"a = "上海 - 悠悠"b = "yoyo"self.assertEqual(a, b)if __name__ == "__main__":unittest.main()

2.执行结果如下:

Failure
Expected :'\xe4\xb8\x8a\xe6\xb5\xb7-\xe6\x82\xa0\xe6\x82\xa0'
Actual   :'yoyo'
 <Click to see difference>

Traceback (most recent call last):
  File "D:\test\yoyotest\kecheng\test12.py", line 27, in test04
    self.assertEqual(a, b)
AssertionError: '\xe4\xb8\x8a\xe6\xb5\xb7-\xe6\x82\xa0\xe6\x82\xa0' != 'yoyo'

3.执行的结果,中文的编码不对,没正常显示中文,遇到这种情况,可以自定义异常输出

二、自定义异常

1.以assertEqual为例分析:

assertEqual(self, first, second, msg=None)

Fail if the two objects are unequal as determined by the '==' operator.

2.翻译: 如果两个对象不能相等,就返回失败,相当于return:first == second

3.这里除了相比较的两个参数first和second,还有第三个参数msg=None,这个msg参数就是遇到异常自定义输出信息

三、unittest常用的断言方法

1.assertEqual(self, first, second, msg=None)

--判断两个参数相等: first == second

2.assertNotEqual(self, first, second, msg=None)

--判断两个参数不相等: first != second

3.assertIn(self, member, container, msg=None)

--判断两个字符串是否包含: member in container

4.assertNotIn(self, member, container, msg=None)

--判断字符串是否不包含: member not in container

5.assertTrue(self, expr, msg=None)

--判断是否为真: expr is True

6.assertFalse(self, expr, msg=None)

--判断是否为假:expr is False

7.assertIsNone(self, obj, msg=None)

--判断是否为None:obj is None

8.assertIsNotNone(self, obj, msg=None)

--判断是否不为None: obj is Not None

四、unittest所有断言方法

1.下面是unittest框架支持的所有断言方法,有兴趣的同学可以慢慢看。

|  assertAlmostEqual(self, first, second, places=None, msg=None, delta=None)
|      Fail if the two objects are unequal as determined by their
|      difference rounded to the given number of decimal places
|      (default 7) and comparing to zero, or by comparing that the
|      between the two objects is more than the given delta.
|
|      Note that decimal places (from zero) are usually not the same
|      as significant digits (measured from the most signficant digit).
|
|      If the two objects compare equal then they will automatically
|      compare almost equal.
|
|  assertAlmostEquals = assertAlmostEqual(self, first, second, places=None, msg=None, delta=None)
|
|  assertDictContainsSubset(self, expected, actual, msg=None)
|      Checks whether actual is a superset of expected.
|
|  assertDictEqual(self, d1, d2, msg=None)
|
|  assertEqual(self, first, second, msg=None)
|      Fail if the two objects are unequal as determined by the '=='
|      operator.
|
|  assertEquals = assertEqual(self, first, second, msg=None)
|
|  assertFalse(self, expr, msg=None)
|      Check that the expression is false.
|
|  assertGreater(self, a, b, msg=None)
|      Just like self.assertTrue(a > b), but with a nicer default message.
|
|  assertGreaterEqual(self, a, b, msg=None)
|      Just like self.assertTrue(a >= b), but with a nicer default message.
|
|  assertIn(self, member, container, msg=None)
|      Just like self.assertTrue(a in b), but with a nicer default message.
|
|  assertIs(self, expr1, expr2, msg=None)
|      Just like self.assertTrue(a is b), but with a nicer default message.
|
|  assertIsInstance(self, obj, cls, msg=None)
|      Same as self.assertTrue(isinstance(obj, cls)), with a nicer
|      default message.
|
|  assertIsNone(self, obj, msg=None)
|      Same as self.assertTrue(obj is None), with a nicer default message.
|
|  assertIsNot(self, expr1, expr2, msg=None)
|      Just like self.assertTrue(a is not b), but with a nicer default message.
|
|  assertIsNotNone(self, obj, msg=None)
|      Included for symmetry with assertIsNone.
|
|  assertItemsEqual(self, expected_seq, actual_seq, msg=None)
|      An unordered sequence specific comparison. It asserts that
|      actual_seq and expected_seq have the same element counts.
|      Equivalent to::
|
|          self.assertEqual(Counter(iter(actual_seq)),
|                           Counter(iter(expected_seq)))
|
|      Asserts that each element has the same count in both sequences.
|      Example:
|          - [0, 1, 1] and [1, 0, 1] compare equal.
|          - [0, 0, 1] and [0, 1] compare unequal.
|
|  assertLess(self, a, b, msg=None)
|      Just like self.assertTrue(a < b), but with a nicer default message.
|
|  assertLessEqual(self, a, b, msg=None)
|      Just like self.assertTrue(a <= b), but with a nicer default message.
|
|  assertListEqual(self, list1, list2, msg=None)
|      A list-specific equality assertion.
|
|      Args:
|          list1: The first list to compare.
|          list2: The second list to compare.
|          msg: Optional message to use on failure instead of a list of
|                  differences.
|
|  assertMultiLineEqual(self, first, second, msg=None)
|      Assert that two multi-line strings are equal.
|
|  assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None)
|      Fail if the two objects are equal as determined by their
|      difference rounded to the given number of decimal places
|      (default 7) and comparing to zero, or by comparing that the
|      between the two objects is less than the given delta.
|
|      Note that decimal places (from zero) are usually not the same
|      as significant digits (measured from the most signficant digit).
|
|      Objects that are equal automatically fail.
|
|  assertNotAlmostEquals = assertNotAlmostEqual(self, first, second, places=None, msg=None, delta=None)
|
|  assertNotEqual(self, first, second, msg=None)
|      Fail if the two objects are equal as determined by the '!='
|      operator.
|
|  assertNotEquals = assertNotEqual(self, first, second, msg=None)
|
|  assertNotIn(self, member, container, msg=None)
|      Just like self.assertTrue(a not in b), but with a nicer default message.
|
|  assertNotIsInstance(self, obj, cls, msg=None)
|      Included for symmetry with assertIsInstance.
|
|  assertNotRegexpMatches(self, text, unexpected_regexp, msg=None)
|      Fail the test if the text matches the regular expression.
|
|  assertRaises(self, excClass, callableObj=None, *args, **kwargs)
|      Fail unless an exception of class excClass is raised
|      by callableObj when invoked with arguments args and keyword
|      arguments kwargs. If a different type of exception is
|      raised, it will not be caught, and the test case will be
|      deemed to have suffered an error, exactly as for an
|      unexpected exception.
|
|      If called with callableObj omitted or None, will return a
|      context object used like this::
|
|           with self.assertRaises(SomeException):
|               do_something()
|
|      The context manager keeps a reference to the exception as
|      the 'exception' attribute. This allows you to inspect the
|      exception after the assertion::
|
|          with self.assertRaises(SomeException) as cm:
|              do_something()
|          the_exception = cm.exception
|          self.assertEqual(the_exception.error_code, 3)
|
|  assertRaisesRegexp(self, expected_exception, expected_regexp, callable_obj=None, *args, **kwargs)
|      Asserts that the message in a raised exception matches a regexp.
|
|      Args:
|          expected_exception: Exception class expected to be raised.
|          expected_regexp: Regexp (re pattern object or string) expected
|                  to be found in error message.
|          callable_obj: Function to be called.
|          args: Extra args.
|          kwargs: Extra kwargs.
|
|  assertRegexpMatches(self, text, expected_regexp, msg=None)
|      Fail the test unless the text matches the regular expression.
|
|  assertSequenceEqual(self, seq1, seq2, msg=None, seq_type=None)
|      An equality assertion for ordered sequences (like lists and tuples).
|
|      For the purposes of this function, a valid ordered sequence type is one
|      which can be indexed, has a length, and has an equality operator.
|
|      Args:
|          seq1: The first sequence to compare.
|          seq2: The second sequence to compare.
|          seq_type: The expected datatype of the sequences, or None if no
|                  datatype should be enforced.
|          msg: Optional message to use on failure instead of a list of
|                  differences.
|
|  assertSetEqual(self, set1, set2, msg=None)
|      A set-specific equality assertion.
|
|      Args:
|          set1: The first set to compare.
|          set2: The second set to compare.
|          msg: Optional message to use on failure instead of a list of
|                  differences.
|
|      assertSetEqual uses ducktyping to support different types of sets, and
|      is optimized for sets specifically (parameters must support a
|      difference method).
|
|  assertTrue(self, expr, msg=None)
|      Check that the expression is true.
|
|  assertTupleEqual(self, tuple1, tuple2, msg=None)
|      A tuple-specific equality assertion.
|
|      Args:
|          tuple1: The first tuple to compare.
|          tuple2: The second tuple to compare.
|          msg: Optional message to use on failure instead of a list of
|                  differences.

转:https://www.cnblogs.com/yoyoketang/p/6691270.html

Python断言方法:assert相关推荐

  1. python断言方法assert

    在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert). 基本的断言方法提供了测试结果是True还是Fal ...

  2. Robotium_断言方法assert、is、search

    下面的这些方法都主要用来判断测试结果是否与预期结果相符,一般把is和search方法放在assert里面判断. assert最常用的还是assertThat方法,是Junit的判断,这里就不多说了. ...

  3. python断言assert实例_Python 拓展之断言(assert)

    写在之前 大家好,这是首发在我公众号「Python空间」的第 60 篇文章,欢迎关注,期待和你的交流. 在昨天的文章中(零基础学习 Python 之处理异常)中学习了处理异常的正确姿势,今天我们继续来 ...

  4. python断言assertequal_python中那个断言assert的优化

    Python Assert 为何不尽如人意# Python中的断言用起来非常简单,你可以在assert后面跟上任意判断条件,如果断言失败则会抛出异常. Copy >>> assert ...

  5. python断言assert实例_python接口测试assert断言

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! unittest.texttestrunner(verbosity=2).run ...

  6. python断言assert实例_Python断言assert的用法代码解析

    在开发一个程序时候,与其让它运行时崩溃,不如在它出现错误条件时就崩溃(返回错误).这时候断言assert 就显得非常有用. python assert断言是声明布尔值必须为真的判定,如果发生异常就说明 ...

  7. 说说 Python TestCase 中的断言方法

    unittest.TestCase 类中提供了很多断言方法, 通过这些断言方法,我们就可以检查程序逻辑是否符合预期. 方法 说明 assertEqual(x,y) 验证 x = y assertNot ...

  8. Assert各种断言方法详解

    1.assertEquals(expected,actual)  和 assertNotEquals(expected,actual); 比较实际值与预期值是否一致.如果一致,程序继续运行,否则抛出异 ...

  9. Python 断言和异常

    Python 断言和异常 Python断言 断言是一种理智检查,当程序的测试完成,可以将其打开或关闭.断言的最简单方法就是把它比作raise-if语句(或更加准确,raise-if-not声明).一个 ...

最新文章

  1. hdu 1166 敌兵布阵(树状数组)
  2. 《自然》 脑机接口新突破 人脑信号转文本准确率达97%
  3. 戴森最新吸尘器,竟用上了无人车和宇宙飞船黑科技
  4. python中自定义函数如何传递动态参数_python 函数的动态参数
  5. UVA 10706 Number Sequence
  6. HBase 在人工智能场景的使用
  7. 扩展方法必须在非泛型静态类中定义
  8. 【java】java boolean 源码分析
  9. 一个开源的ORM框架——Light.Data
  10. 基于发起源判断CSRF***的方法
  11. JLOI2015 城池攻占
  12. com.mysql.jdbc.connection和java.sql.connection的区别
  13. CSC公派|小红本及小黄本的办理
  14. 国内nodejs下载网站
  15. ghost网络克隆功能实现【批量】计算机操作【系统的安装】,网克(诚龙网维全自动PXE网刻工具)批量使用GHOST方法...
  16. 关于固态硬盘的一些总结
  17. Android如何实现音频合成
  18. [转]网易新闻客户端为什么开始在北京市区的地铁、公交站牌大批量投放广告?...
  19. 【转载】关于Python Beautifulsoup的详细说明
  20. 全国计算机等级考试二级C语言考试题

热门文章

  1. 分别从资源管理,服务用户,进程交互,系统实现的角度分析操作系统的作用
  2. 使用飞书webhook发送图片消息
  3. 浙江省第6届程序设计竞赛结题报告汇总 zoj3202-3212
  4. java面试题(转载其他人,方便日常看)
  5. Python程序开发——第二章 条件语句和循环语句
  6. 使用nmap扫描提示utf-8编码错误_Web漏洞扫描神器Nikto使用指南
  7. 部署docker-consul群集,Harbor构建Docker私有仓库
  8. python可视化拖拽平台_【技术解码】不用控制器,只拖拽模型面就可以做动画!很好玩的动画工具...
  9. Redhat系统下三种主要的软件包安装方法
  10. robot连接mysql_robot连接mysql - autocar - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...