单元测试-unittest测试框架

111 阅读1分钟

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自动化测试实战》,代码未作修改