unittest是python常用的单元测试框架。
1、假设要测试的单元代码是一个Count类(calculator.py)
class Count:
def __init__(self,a,b):
self.a=int(a)
self.b=int(b)
def add(self):
return self.a+self.b
2、单元测试代码(test.py)
from calculator import Count
import unittest
class TestCount(unittest.TestCase):
def setUp(self):
print("test start")
def test_add(self):
result=Count(2,3)
self.assertEqual(result.add(),5)
def tearDown(self):
print("test,end")
#方法一
if __name__=="__main__":
unittest.main()
#main方法使用TestLoader自动查找本模块内的测试用例,并自动执行
除方法一,单元测试模块代码指定的代码可以用以下两方式替换
方法二:
if __name__=="__main__":
suite=unittest.TestSuite() #创建测试用例集合
suite.addTest(TestCount("test_add")) #将测试用例集合里添加用例
runner=unittest.TextTestRunner() #创建用例测试引擎
runner.run(suite) #测试引擎跑用力
方法三:
if __name__=="__main__":
test_dir='./'
discoversuite=unittest.defaultTestLoader.discover(test_dir,pattern='test*.py')
#方法二手动添加用例,方法三用例加载器自动查找指定目录下匹配指定文件名的.py文件下的的测试用例,并将其添加到测试集中
runner=unittest.TextTestRunner()
runner.run(discoversuite)
将以上两个文件房在目录A下,进入目录A暑促“cmd”打开命令窗口,输入"test.py"即将代码匀性起来,运行结果如下
test start
test,end
.
----------------------------------------------------------------------
Ran 1 test in 0.001s
OK
3、单元测试用例的构成
setup方法:执行用例初始化工作,如进入页面,连接数据库等;
test_**方法:定义用例执行步骤;
tearDown方法:指定用例的收尾工作,如退出页面,关闭数据库连接等;
4、断言
常用断言列举
-
assertEqual(a,b),assertNotEqual(a,b):判断a=b或a!=b
-
assertTrue(x),assertFalse(x):判断x真假
-
assertIn(a,b),assertNotIn(a,b):判断是否在b内
参考书籍《Selenium2自动化测试实战》,代码未作修改