3.7 unittest之断言

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

3.7.1 简单案例

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 isTrue '''
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.执行的结果,中文编码不对,没正常显示中文,遇到这种情况,可以自定义异常输出

3.7.2 自定义异常

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参数就是遇到异常后自定义输出信息

3.7.3 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:objis None
8).assertIsNotNone(self, obj,msg=None)
--判断是否不为None:obj is not None
3.7.4 unittest所有断言方法
1).下面是unittest框架支持的所有断言方法,有兴趣的同学可以慢慢看。(官方资料)

|  assertAlmostEqual(self, first, second, places=None, msg=None,delta=None)
| Fail if the two objects are unequal asdetermined by their
| difference rounded to the given number ofdecimal places
| (default 7) and comparing to zero, or bycomparing that the
| between the two objects is more than the givendelta.
|
| Note that decimal places (from zero) areusually not the same
| as significant digits (measured from the mostsignficant digit).
|
| If the two objects compare equal then they willautomatically
| 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 ofexpected.
|
| assertDictEqual(self, d1, d2, msg=None)
|
| assertEqual(self, first, second, msg=None)
| Fail if the two objects are unequal asdetermined 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 anicer default message.
|
| assertGreaterEqual(self, a, b, msg=None)
| Just like self.assertTrue(a >= b), but witha nicer default message.
|
| assertIn(self, member, container, msg=None)
| Just like self.assertTrue(a in b), but with anicer default message.
|
| assertIs(self, expr1, expr2, msg=None)
| Just like self.assertTrue(a is b), but with anicer 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 anicer default message.
|
| assertIsNot(self, expr1, expr2, msg=None)
| Just like self.assertTrue(a is not b), but witha 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. Itasserts that
| actual_seq and expected_seq have the sameelement counts.
| Equivalent to::
|
| self.assertEqual(Counter(iter(actual_seq)),
| Counter(iter(expected_seq)))
|
| Asserts that each element has the same count inboth 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 anicer default message.
|
| assertLessEqual(self, a, b, msg=None)
| Just like self.assertTrue(a <= b), but witha nicer default message.
|
| assertListEqual(self, list1, list2, msg=None)
| A list-specific equality assertion.
|
| Args:
| list1: The first listto compare.
| list2: The second listto compare.
| msg: Optional messageto 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 determinedby their
| difference rounded to the given number ofdecimal places
| (default 7) and comparing to zero, or bycomparing that the
| between the two objects is less than the givendelta.
|
| Note that decimal places (from zero) areusually not the same
| as significant digits (measured from the mostsignficant 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 determinedby the '!='
| operator.
|
| assertNotEquals = assertNotEqual(self, first, second, msg=None)
|
| assertNotIn(self, member, container, msg=None)
| Just like self.assertTrue(a not in b), but witha 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 regularexpression.
|
| assertRaises(self, excClass, callableObj=None, *args, **kwargs)
| Fail unless an exception of class excClass israised
| by callableObj when invoked with arguments argsand keyword
| arguments kwargs. If a different type ofexception is
| raised, it will not be caught, and the testcase will be
| deemed to have suffered an error, exactly asfor an
| unexpected exception.
|
| If called with callableObj omitted or None,will return a
| context object used like this::
|
| withself.assertRaises(SomeException):
| do_something()
|
| The context manager keeps a reference to theexception as
| the 'exception' attribute. This allows you toinspect the
| exception after the assertion::
|
| withself.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 exceptionmatches 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: Functionto be called.
| args: Extra args.
| kwargs: Extra kwargs.
|
| assertRegexpMatches(self, text, expected_regexp, msg=None)
| Fail the test unless the text matches theregular 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 validordered sequence type is one
one
| which can be indexed, has a length, and has anequality operator.
|
| Args:
| seq1: The firstsequence to compare.
| seq2: The secondsequence to compare.
| seq_type: The expecteddatatype of the sequences, or None if no
| datatype should be enforced.
| msg: Optional messageto 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 tocompare.
| set2: The second set tocompare.
| msg: Optional messageto use on failure instead of a list of
| differences.
|
| assertSetEqual uses ducktyping to supportdifferent types of sets, and
| is optimized for sets specifically (parametersmust 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 tupleto compare.
| tuple2: The secondtuple to compare.
| msg: Optional messageto use on failure instead of a list of
| differences.

3.7 unittest之断言的更多相关文章

  1. Python单元测试框架unittest之断言(assert)

    unittest中断言主要有三种类型: 1.基本的布尔断言,即:要么正确,要么错误的验证 2.比较断言,如比较两个变量的值(跟上面的布尔断言区别不大,主要是通过比较两个变量的值得出布尔值) 3.复杂断 ...

  2. Appium+python的单元测试框架unittest(4)——断言(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10051576.html) 在我们编写的测试用例中,测试步骤和预期结果是必不可少的.当我们运行测试用例时,得到一个运行 ...

  3. unittest之断言

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

  4. python unittest之断言及示例

    python unintest单元测试框架提供了一整套内置的断言方法. 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果异常,则当做错误来处理 注意:以上两种方式的区 ...

  5. python+unittest框架第四天unittest之断言(一)

    unittest中的测试断言分两天总结,hhh其实内容不多,就是懒~ 断言的作用是什么?  答:设置测试断言以后,能帮助我们判断测试用例执行结果. 我们先看下unittest支持的断言有哪些: 对上面 ...

  6. unittest assert断言

    unittest常用的断言方法 1.assertEqual(self, first, second, msg=None) --判断两个参数相等:first == second 2.assertNotE ...

  7. 其他类想使用unittest的断言方法,就import unittest的框架,继承他,使用他里面的方法

    在断言层 也可以同样用这个方法

  8. unittest 常用断言

    1 assertEqual(a,b)  判断a==b 2 assertNotEqual(a,b) 判断a !=b 3 assertTrue(x)  bool (x) is True 4 assertF ...

  9. 测开之路五十六:实现类似unittest的断言

    import inspect class Case(object): """ 实现断言 """ def __init__(self): se ...

随机推荐

  1. C# 今天时间 今天结束时间

    var startTime = DateTime.UtcNow.ToString(timeFormat); ).AddSeconds(-).ToUniversalTime().ToString(tim ...

  2. KiB 、十进制单位转换 、二进制单位转换

    KiB是kilo binary byte的缩写,指的是千位二进制字节 KB是kilobyte的缩写,指的是千字节   二进制标准命名   十进制国际单位制SI标准: 1 KB= 1,000 Byte ...

  3. springboot测试的方法

    @RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest( classes = {App.class})@WebAppConfigurationpu ...

  4. 使用Python+turtle绘制动画重现龟兔赛跑现场

    问题描述: 在经典的龟兔赛跑故事中,兔子本来是遥遥领先的,结果因为骄傲,居然在比赛现场睡了一觉,醒来后发现乌龟已经快到终点了,于是赶紧追赶,无奈为时已晚,最终输掉了比赛.本文使用turtle绘制乌龟和 ...

  5. Spring学习之实例化bean的三种方式

    实例化bean的三种方式 构造器实例化bean Person.java public class Person { private String name; private Integer age; ...

  6. K2 BPM获评“表现强劲”_2019 Forrester 报告_全球领先的工作流引擎

    3月12日,在Forrester Research发布的报告<Forrester Wave:2019年第一季度广泛部署数字流程自动化(DPA)>中,K2获评“表现强劲”. 此次共有10项评 ...

  7. matplotlib图表组成元素

    一.函数 1.plot()    --   展示变量的趋势与变化 用法: plt.plot(x,y,ls="-",lw=2,label="plot figure" ...

  8. C语言采用socket实现http post方式上传json数据

    1.按照HTTP协议发送请求: http POST 报文格式 http 报文是面向文本的. 报文分为:请求报文和响应报文 请求报文由:请求行,请求头部,空行和请求数据四个部分组成. <1.请求行 ...

  9. nopcommerce 4.1 core 插件 相关1

    nop中 插件机制是比较值得学习的: Nop 插件学习: 1. 项目里面的生成必须是采用 直接编辑项目文件,参考nop原本的项目文件 动态加载插件的方法-mvc3 参考: using System.L ...

  10. 用vector与bitset分别创建1亿以内的素数表,比较快慢

    vector容器: 代码如下: #include<iostream>#include<vector>#include<ctime>using namespace s ...