TDD学习日记

最近在学习测试驱动开发(TDD)中在assert的使用上懵懵懂懂,记录一下加深记忆。平时写测试框架使用的assert的种类没有那么多,因为我是买了书去学习,书中使用的也不是很全
先介绍一下unittest的基本使用方法:

  • import unittest模块
  • 定义一个继承 unittest.TestCase 的测试用例类
  • 定义 setUp 和 tearDown两个方法,tearDown的过程很重要,是为以后的TestCase留一个干净的测试环境。
  • 定义测试用例,均要以test开头
  • 一个测试用例只需要测试一个方面,测试的目的和测试内容要很明确。一般使用assertEqual、assertIn等断言方法去判断程序执行的结果和预期结果是否相符
  • 调用 unittest.main() 开始跑测试用例
  • 测试全部通过,不输出任何东西;若测试未通过,则会输出相应的错误提示。
在这里插入代码片
 1.sertEquals(expected,actual)  和 assertNotEquals(expected,actual);
		比较实际值与预期值是否一致。如果一致,程序继续运行,否则抛出					  异常,会打印报错信息。常用断言方法,便于调试。
在这里插入代码片
2.	assertTrue(message,condition) 和 assertFalse(message,condition)
	如果条件的真假与预期相同,程序继续运行,否则抛出异常,不会打印报错信息。
在这里插入代码片
3.assertNull(message,object) 和 assertNotNull(message,object)

判断一个对象是否为空,如果结果与预期相同,程序继续运行,否则抛出异常。

在这里插入代码片
4.assertSame(expected,actual) 和 assertNotSame(expected,actual)
判断预期的值和实际的值是否为同一个参数(即判断是否为相同的引用),如果结果与预	期相同,程序继续运行,否则抛出异常。

assertSame(expected,actual) 和 assertEquals(expected,actual)的区别;

assertSame(A,B)  ————————————> A==B

assertEquals(A,B)————————————>A.equals(B)
在这里插入代码片
5.fail(message)
“fail”断言能使测试立即失败,这种断言通常用于标记某个不应该被到达的				分支。例如测试中某个代码块要try  catch,则在catch代码中加入	fail(message)方法,否则代码直接进入catch块,无法判断测试结果。

还有其他使用方法
assertIs(a,b,[msg=‘测试失败时打印的信息’]):若a是b,则测试用例通过
assertNotIs(a,b,[msg=‘测试失败时打印的信息’]):若a不是b,则测试用例通过
assertIsNone(x,[msg=‘测试失败时打印的信息’]):若x是None,则测试用例通过
assertIsNotNone(x,[msg=‘测试失败时打印的信息’]):若x不是None,则测试用例通过
assertIn(a,b,[msg=‘测试失败时打印的信息’]):若a在b中,则测试用例通过
assertNotIn(a,b,[msg=‘测试失败时打印的信息’]):若a不在b中,则测试用例通过
assertIsInstance(a,b,[msg=‘测试失败时打印的信息’]):若a是b的一个实例,则测试用例通过
assertNotIsInstance(a,b,[msg=‘测试失败时打印的信息’]):若a不是b的实例,则测试用例通过
assertAlmostEqual(a, b):round(a-b, 7) == 0
assertNotAlmostEqual(a, b):round(a-b, 7) != 0
assertGreater(a, b):a > b
assertGreaterEqual(a, b):a >= b
assertLess(a, b):a < b
assertLessEqual(a, b):a <= b
assertRegexpMatches(s, re):regex.search(s)
assertNotRegexpMatches(s, re):not regex.search(s)
assertItemsEqual(a, b):sorted(a) == sorted(b) and works with unhashable objs
assertDictContainsSubset(a, b):all the key/value pairs in a exist in b
assertMultiLineEqual(a, b):strings
assertSequenceEqual(a, b):sequences
assertListEqual(a, b):lists
assertTupleEqual(a, b):tuples
assertSetEqual(a, b):sets or frozensets
assertDictEqual(a, b):dicts
原文链接:https://blog.****.net/lala_peng/article/details/84304336

上一篇:java-Hamcrest中的stringContainsInAnyOrder匹配项?


下一篇:java – 为什么我的hamcrest“包含”不按预期工作?