男神鹏:restframewor 单元测试常用断言以及测试详解。
常用断言语句
assertFalse(expr, msg=None)
判断返回的是否是False
assertTrue(expr, msg=None)
assertEqual(first, second, msg=None)
判断是否相等
assertNotEqual(first, second, msg=None)
assertAlmostEqual(first, second, places=None, msg=None, delta=None)
assertNotAlmostEqual(first, second, places=None, msg=None, delta=None)
assertSequenceEqual(seq1, seq2, msg=None, seq_type=None)
assertListEqual(list1, list2, msg=None)
assertTupleEqual(tuple1, tuple2, msg=None)
assertSetEqual(set1, set2, msg=None)
assertIn(member, container, msg=None)
判断member是否包含在container中
assertNotIn(member, container, msg=None)
assertIs(expr1, expr2, msg=None)
assertIsNot(expr1, expr2, msg=None)
assertDictEqual(d1, d2, msg=None)
assertDictContainsSubset(expected, actual, msg=None)
assertItemsEqual(expected_seq, actual_seq, msg=None)
assertMultiLineEqual(first, second, msg=None)
assertLess(a, b, msg=None)
assertLessEqual(a, b, msg=None)
assertGreater(a, b, msg=None)
assertGreaterEqual(a, b, msg=None)
assertIsNone(obj, msg=None)
assertIsInstance(obj, cls, msg=None)
assertNotIsInstance(obj, cls, msg=None)
assertRaisesRegexp(expected_exception, expected_regexp,
callable_obj=None, *args, **kwargs)
assertRegexpMatches(text, expected_regexp, msg=None)
assertNotRegexpMatches(text, unexpected_regexp, msg=None)
测试接口地址
测试接口地址建议使用硬编码,尽量不要使用reverse反解析url,原因是接口地址尽量避免改变,如果必须修改,需要以很明显的方式来提醒开发人员以便开发人员通知接口使用人员。
测试数据准备
有如下两种方法准备测试数据
1.简单的数据可以在setUp()里来创建;
2.复杂数据可以使用fixtures来写,并在赋值给测试类的fixtures属性;
fixtures数据示例
[{{
“model”: “myapp.person”,
“pk”: 1,
“fields”: {
“name”: “Xiaoli”,
“phone”: “123456”
}
},
{
“model”: “myapp.person”,
“pk”: 2,
“fields”: {
“name”: “xiangki”,
“phone”: “963852741”
}
}
]
测试覆盖率(coverage)
在Pycharm里可以通用右键项目,选择Run ‘Test:’ with Coverage来查看测试的覆盖率。
使用Python 测试代码覆盖率统计工具 coverage.py
1:安装
(1).pip install coverage
2:生成覆盖率统计文件
(1) .python -m coverage run --source='.' manage.py test --noinput
(2) .执行代码覆盖率统计,只需要通过coverage的run参数执行被统计代码即可。
(3). 跑完后,会自动生成一个覆盖率统计结果文件(data file):.coverage。如果要修改这个默认的文件名也可以,只要设置COVERAGE_FILE环境变量。
3:显示统计结果
python -m coverage report
有了覆盖率统计结果文件,只需要再运行report参数,就可以在命令里看到统计的结果