‘‘‘为什么要使用单元测试框架?: 1.当用例很多的时候用来组织用例和执行用例 2.提供丰富的比较方法 3.提供丰富的日志‘‘‘ import unittest import HTMLTestRunner import os path = os.getcwd() class Test_baidu(unittest.TestCase): def setUp(self): print(‘每一个开始了-----------‘) def test_1(self): print(‘test_1‘) self.assertEqual(‘1‘,‘2‘,msg=‘1!=2‘) def test_2(self): print(‘test_2‘) self.assertIsInstance([1,2],list) @unittest.skip #虽然这个方法不执行,但是setup和teardown还要执行的 def test_3(self): print(‘test_3‘) self.assertIs(‘1‘,‘1‘) def tearDown(self): print(‘每一个结束了----------‘) @classmethod def setUpClass(cls): print(‘大项目开是啦+++++++++‘) @classmethod def tearDownClass(cls): print(‘大项目结束了+++++++++++‘) if __name__ == ‘__main__‘: suit = unittest.TestSuite() suit.addTest(Test_baidu(‘test_2‘)) #先把要执行的顺序,一个一个添加进去 ---就是组织用例 suit.addTest(Test_baidu(‘test_1‘)) suit.addTest(Test_baidu(‘test_3‘)) #有了skip的存在,加进去也没有用的 runner = unittest.TextTestRunner() #把要执行的案例添加到suit之后,用TextTestRunner()对象就可以运行了 --组织好用例一键执行 # discover = unittest.TestLoader().discover(path) # runner1 = HTMLTestRunner.HTMLTestRunner() # runner1.run(discover) runner.run(suit)
上面是个 test*.py,,这个是main.py
‘‘‘当用例很少的时候可以用suit一个一个的添加。 我们要把所有的用例都放在TEST_Case作用,里面有很多test*.py, 现在只有一个u1.py‘‘‘ import unittest,os path = os.getcwd() print(path) discover = unittest.defaultTestLoader.discover(path,pattern=‘u*.py‘) #discover 返回的就是suit,所以Testloader就是把所有的案例加载到suit中。 runner = unittest.TextTestRunner() runner.run(discover) if __name__ == ‘__main__‘: unittest.main(verbosity=1)
skip跳过测试用例
import unittest import HTMLTestRunner import os path = os.getcwd() class Test_baidu(unittest.TestCase): def setUp(self): print(‘每一个开始了-----------‘) def test_1(self): print(‘test_1‘) self.assertEqual(‘1‘,‘2‘,msg=‘1!=2‘) def test_2(self): print(‘test_2‘) self.assertIsInstance([1,2],list) @unittest.skip #虽然这个方法不执行,但是setup和teardown还要执行的 def test_3(self): print(‘test_3‘) self.assertIs(‘1‘,‘1‘) @unittest.skipIf(3<2,‘当条件为真时跳过测试,条件为假的时候执行案例‘) def test_4(self): print(‘test_4‘) self.assertIs(‘1‘,‘1‘) @unittest.skipUnless(3<2,‘当条件为假的时候不执行测试用例‘) #unless 除非 def test_5(self): print(‘test_5‘) self.assertIs(‘1‘,‘1‘) def tearDown(self): print(‘每一个结束了----------‘) @classmethod def setUpClass(cls): print(‘大项目开是啦+++++++++‘) @classmethod def tearDownClass(cls): print(‘大项目结束了+++++++++++‘) if __name__ == ‘__main__‘: unittest.main(verbosity=2)
生成html文件
import unittest,os from HTMLTestRunner import HTMLTestRunner path = os.getcwd() print(path) discover = unittest.defaultTestLoader.discover(path,pattern=‘u*.py‘) #discover 返回的就是suit,所以Testloader就是把所有的案例加载到suit中。 htmlpath = path+r‘\report.html‘ print(htmlpath) f = open(htmlpath,‘wb‘) runner = HTMLTestRunner(stream=f,verbosity=2,title=‘测试报告‘,description=‘这个是自己的的测试结果‘) #htmltestrunner 就是对testrunner的封装 runner.run(discover) f.close() if __name__ == ‘__main__‘: unittest.main(verbosity=1)
import time now = time.strftime("%Y-%m-%d %H-%M-%S") ‘‘‘原来的html文件名是写死的,重新生成就会覆盖,所有让每次名字不一样加入时间(文件名好像不能用:一直报错)‘‘‘ htmlpath = ‘F:/asus/auto_file/unittest_html‘+‘/‘+now+‘report.html‘ f = open(htmlpath,‘wb‘) runner = HTMLTestRunner(stream=f,verbosity=2,title=‘测试报告‘,description=‘这个是自己的的测试结果‘) #htmltestrunner 就是对testrunner的封装 runner.run(discover) f.close()
原文:https://www.cnblogs.com/tarzen213/p/11108860.html