zoukankan      html  css  js  c++  java
  • Selenium2+python自动化56-unittest之断言(assert)【转载】

    本篇转自博客:上海-悠悠

    原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/

     

    前言

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

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

    一、简单案例

    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 :'xe4xb8x8axe6xb5xb7-xe6x82xa0xe6x82xa0'
    Actual   :'yoyo'
     <Click to see difference>

    Traceback (most recent call last):
      File "D: estyoyotestkecheng est12.py", line 27, in test04
        self.assertEqual(a, b)
    AssertionError: 'xe4xb8x8axe6xb5xb7-xe6x82xa0xe6x82xa0' != '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

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

  • 相关阅读:
    作诗(si)[分块]
    【洛谷 P3469】[POI2008]BLO-Blockade(割点)
    【洛谷 P2464】[SDOI2008]郁闷的小J(线段树)
    【BZOJ 3907】网格(Catalan数)
    【洛谷 P4211】[LNOI2014]LCA(树链剖分,差分)
    【洛谷 P2480】 [SDOI2010]古代猪文(中国剩余定理,Lucas定理)
    【洛谷 P3842】[TJOI2007]线段(DP)
    【洛谷 P2346】四子连棋(状态压缩,搜索)
    【洛谷 P1363】幻想迷宫(搜索)
    【洛谷 P1364】医院设置(树的重心)
  • 原文地址:https://www.cnblogs.com/caoj/p/7792810.html
Copyright © 2011-2022 走看看