Selenium2+python自动化56-unittest之断言(assert)

简介: 前言 在测试用例中,执行完测试用例后,最后一步是判断测试结果是pass还是fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert)。 用unittest组件测试用例的时候,断言的方法还是很多的,下面介绍几种常用的断言方法:assertEqual、assertIn、asse...

前言

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

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

 selenium+python高级教程》已出书:selenium webdriver基于Python源码案例

(购买此书送对应PDF版本)

 

一、简单案例

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

# coding:utf-8
import unittest
class Test(unittest.TestCase):
    def test01(self):
        '''判断 a == b '''
        a = 1
        b = 1
        self.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 = True
        self.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.

 

学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429

觉得对你有帮助,就在右下角点个赞吧,感谢支持!

al_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.

相关文章
|
8月前
|
安全 JavaScript 开发者
Python 自动化办公神器|一键转换所有文档为 PDF
本文介绍一个自动化批量将 Word、Excel、PPT、TXT、HTML 及图片转换为 PDF 的 Python 脚本。支持多格式识别、错误处理与日志记录,适用于文档归档、报告整理等场景,大幅提升办公效率。仅限 Windows 平台,需安装 Office 及相关依赖。
430 0
|
6月前
|
存储 数据采集 监控
Python定时爬取新闻网站头条:从零到一的自动化实践
在信息爆炸时代,本文教你用Python定时爬取腾讯新闻头条,实现自动化监控。涵盖请求、解析、存储、去重、代理及异常通知,助你构建高效新闻采集系统,适用于金融、电商、媒体等场景。(238字)
1039 2
|
7月前
|
SQL 测试技术 数据库
healenium+python+selenium
上次介绍了如何利用healenium+java+selenium来实现selenium的自愈,这次介绍如何healenium+python+selenium。关于healenium+python+selenium网上资料更少,并且甚至是错误的。在著名的书籍《软件测试权威指南中》也是有一定问题的。现在介绍如下
410 4
|
7月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
9月前
|
存储 数据采集 数据可视化
Python自动化分析知网文献:爬取、存储与可视化
Python自动化分析知网文献:爬取、存储与可视化
|
9月前
|
数据采集 存储 监控
Python爬虫自动化:定时监控快手热门话题
Python爬虫自动化:定时监控快手热门话题
|
7月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
1096 102
|
7月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
441 104
|
7月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
348 103

推荐镜像

更多
下一篇
开通oss服务