mohanzb 2020-01-18
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 #计算减法 def sub(self): return self.a - self.b
runtest.py
import unittest# 加载测试文件import testaddimport testsub# 构造测试集suite = unittest.TestSuite()suite.addTest(testadd.TestAdd("test_add"))suite.addTest(testadd.TestAdd("test_add2"))suite.addTest(testsub.TestSub("test_sub"))suite.addTest(testsub.TestSub("test_sub2"))if __name__ == ‘__main__‘: # 执行测试 runner = unittest.TextTestRunner() runner.run(suite)"""这样的拆分带来了好处,可以根据不同的功能创建不同的测试文件,甚至是不同的测试目录,测试文件中还可以将不同的小功能划分为不同的测试类,在类下编写测试用例,整体结构更加清晰。这样的设计看上去很完美,但依然没有解决添加用例的问题,当用例达到成百上千条时,在runtest.py文件中通过addTest()添加/删除测试用例就变得非常麻烦,那么有没有方法让unitest单元测试框架自动识别测试用例呢?答案是肯定的,TestLoader类中提供的discover()方法可以解决这个问题。"""
testadd.py
from calculator import Countimport unittestclass TestAdd(unittest.TestCase): def setUp(self): print("test case start") def tearDown(self): print("test case end") def test_add(self): j = Count(2,3) self.assertEqual(j.add(),5) def test_add2(self): j = Count(41, 76) self.assertEqual(j.add(), 117)if __name__ == ‘__main__‘: unittest.main()
testsub.py
from calculator import Countimport unittestclass TestSub(unittest.TestCase): def setUp(self): print("test case start") def tearDown(self): print("test case end") def test_sub(self): j = Count(2, 3) self.assertEqual(j.sub(),-1) def test_sub2(self): j = Count(71, 46) self.assertEqual(j.sub(),25)if __name__ == ‘__main__‘: unittest.main()
基于之前生成的json、yaml文件,通过命令行终端cd到用例所在目录,执行hrun 用例名称即可。执行完测试用例会在当前目录生成一个report文件夹,里面会有一个按时间戳生成的html格式报告文件