单元测试
通过调用函数,输入参数测试。
def add(a,b):
c = a + 2 * b
return c
if __name__ == "__main__"
print(add(2,3))
使用例子:
import unittest
class IntegerArithmeticTestCase(unittest.TestCase):
def testAdd(self): # test method names begin with 'test'
self.assertEqual((1 + 2), 3)
self.assertEqual(0 + 1, 1)
def testMultiply(self):
self.assertEqual((0 * 10), 0)
self.assertEqual((5 * 8), 40)
if __name__ == '__main__':
unittest.main()
脚本执行顺序
1.用例之间不要存在依赖关系,每个用例都能单独运行
2.用例之间不要相互调用,需要电泳的公共方法可以写成方法去调用
def setUp(self):
# 每个用例执行之前,先执行一次
def tearDown(self):
# 每个用例执行之后,调用一次
@classmethod
def setUpClass(cls):
# 用例前,只执行一次
@classmethod
def tearDownClass(cls):
# 用例后,只执行一次
assert断言
方法 | 检查 |
---|---|
assertEqual(a,b) | a == b |
assertNotEqual(a,b) | a != b |
assertTrue(x) | bool(x) is True |
assertFalse(x) | bool(x) is False |
assertIs(a,b) | a is b |
assetIsNot(a,b) | a is not b |
assertIsNone(x) | x is not None |
assertIn(a,b) | a in b |
assertNotIn(a,b) | a not in b |
assertIsInstance(a, b) | isinstance(a,b) |
assertNotIsInstance(a, b) | not isinstance(a,b) |
def test_01(self):
a = 2
b = 3
self.assertTrue(a == b)
__name__和__main__
* 模块是对象,并且所有的模块都有一个内置属性 __name__
* 如果模块是被直接执行, _name__的值为 ‘_main__’
print(__name__)
>>> __main__
* 如果模块是被导入, __name__的值模块的名字
import unittest
print(unittest.__name__)
>>> unittest
* if ___name__和 ‘’_main__’’ 我们简单的理解就是: 如果模块是被直接运行的,则代码块被运行,如果模块是被导入的,则代码块不被运行。
# 第二种运行方法
if __name__ == '__main__':
unittest.main()
函数
定义规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号**()**。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
语法:
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]