单元测试:开发程序的人自己测试自己的代码
unittest自动化测试框架
1、单元测试
import unittest def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): '''测试add方法''' def test_add_normal(self): # 测试用例必须以test开头 '''正常测试加法用例''' result = add(1, 2) self.assertEqual(3, result) def test_add_error1(self): '''测试失败加法用例''' result = add(1, 2) self.assertEqual(4, result) def test_add_error2(self): '''测试失败加法用例有msg''' result = add(1, 2) self.assertEqual(5, result, '正常用例,没有通过') def test_param_add(self, a, b, c): result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result)) if __name__ == '__main__': # 不产生测试用例,执行所有测试用例 unittest.main()
2、产生测试报告
2.1 HTMLTestRunnerNew
下载HTMLTestRunnerNew.py放到python的环境变量里
import unittest import HTMLTestRunner import HTMLTestRunnerNew def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): '''测试add方法''' def test_add_normal(self): # 测试用例必须以test开头 '''正常测试加法用例''' result = add(1, 2) self.assertEqual(3, result) def test_add_error1(self): '''测试失败加法用例''' result = add(1, 2) self.assertEqual(4, result) def test_add_error2(self): '''测试失败加法用例有msg''' result = add(1, 2) self.assertEqual(5, result, '正常用例,没有通过') def test_param_add(self, a, b, c): result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result)) if __name__ == '__main__': # 不产生测试用例 # unittest.main() # 执行某条或几条测试用例 # test_suit = unittest.TestSuite() # test_suit.addTest(TestAdd('test_add_error1')) # test_suit.addTest(TestAdd('test_add_normal')) # 执行某个类中所有测试用例 test_suit = unittest.makeSuite(TestAdd) # 查找某个目录下的测试用例 # test_suit = unittest.defaultTestLoader.discover('case', 'test*.py') with open('report.html', 'wb') as fw: runner = HTMLTestRunnerNew.HTMLTestRunner(stream=fw, title='tmz测试报告', description='tmz接口测试报告', verbosity=2) runner.run(test_suit)
测试报告如何打开查看:
1.选中文件--右键--Copy Path...--拷贝路径--放到浏览器中打开
2.双击测试报告--在测试报告的html脚本中移动鼠标--会弹出浏览器的选项--选择对应的浏览器打开
执行的测试报告如图所示:
2.1 HTMLTestRunner
下载HTMLTestRunner.py放到python的环境变量里
import unittest import HTMLTestRunner import HTMLTestRunnerNew def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): '''测试add方法''' def test_add_normal(self): # 测试用例必须以test开头 '''正常测试加法用例''' result = add(1, 2) self.assertEqual(3, result) def test_add_error1(self): '''测试失败加法用例''' result = add(1, 2) self.assertEqual(4, result) def test_add_error2(self): '''测试失败加法用例有msg''' result = add(1, 2) self.assertEqual(5, result, '正常用例,没有通过') def test_param_add(self, a, b, c, desc): self._testMethodDoc = desc result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result)) if __name__ == '__main__': # 不产生测试用例 # unittest.main() # 执行某条或几条测试用例 # test_suit = unittest.TestSuite() # test_suit.addTest(TestAdd('test_add_error1')) # test_suit.addTest(TestAdd('test_add_normal')) # 执行某个类中所有测试用例 test_suit = unittest.makeSuite(TestAdd) # 查找某个目录下的测试用例 # test_suit = unittest.defaultTestLoader.discover('case', 'test*.py') with open('report.html', 'wb') as fw: runner = HTMLTestRunner.HTMLTestRunner(stream=fw, title = 'tmz测试报告',description= 'tmz接口测试报告',verbosity=2) runner.run(test_suit)
测试报告如何打开查看:
1.选中文件--右键--Copy Path...--拷贝路径--放到浏览器中打开
2.双击测试报告--在测试报告的html脚本中移动鼠标--会弹出浏览器的选项--选择对应的浏览器打开
执行的测试报告如图所示:
3、参数化
import unittest import HTMLTestRunner import HTMLTestRunnerNew import parameterized def add(a,b): return a+b # 在运行时不要用run unittest in xxx,否则不能生成测试报告 class TestAdd(unittest.TestCase): @parameterized.parameterized.expand( [ [1, 2, 3, '参数化说明1'], [-1, 2, 1, '参数化说明2'], [-1, 2, 2, '参数化说明3'] ] ) def test_param_add(self, a, b, c, desc): self._testMethodDoc = desc result = add(a, b) self.assertEqual(c, result, '预期结果%s,实际结果%s' %(c, result))