• python unittest库的入门学习


    1. unittest的基本概念

    2. 创建测试用例类
    3. unittest的使用示例

    一、基本概念

    Testcase是所有测试用例的基类

    TestSuite是创建一个测试“容器”,可以往里面加case

    TextTestRunner是运行测试用例

    二、如何创建测试用例类

    所有的用例类都需要继承TestCase

    测试用例中setUp和tearDown是每一个case开始和结束的时候都回执行的

    测试用例必须以test开头

    还可以在用例类中定义类方法,setUpClass和tearDownClass,在每一个用例类的开始和结尾处都执行一遍。

    import unittest
    #测试类必须要继承unittest.TestCase
    class TestMethod(unittest.TestCase):
        @classmethod
        def setUpClass(cls):
            print('类执行之前')
        @classmethod
        def tearDownClass(cls):
            print('类结束之后')
        #每一个测试方法开始要执行的方法
        def setUp(self):
            print("测试方法开始啦")
        #每一个测试方法结束后执行的方法
        def tearDown(self):
            print("测试方法结束啦")
        #测试方法必须要以test开头!!!
        def test01(self):
            print("这个是测试方法01")
    
        def test02(self):
            print("这个是测试方法02")
    if __name__=="__main__":
    

    三、使用示例:

    import unittest
    import json
    from demo import RunMain
    
    class TestMethod(unittest.TestCase):
    
    	def setUp(self):
    		self.run = RunMain()
    
    
    	def test_01(self):
    		data = {
    			'username':'nick',
    			'password':'123',
    			'errorCode':'1000'
    		}
    
    		url = "http://localhost:8000/login/"
    		res = self.run.run_main(url, 'POST', data)
    
    		#self.assertEqual(res['errorCode'],'1000',"测试成功")
    		print(res)
    
    		# 打印全局变量
    		#print(userid)
    
    
    	#@unittest.skip('test_02')
    	def test_02(self):
    
    		# 全局变量
    		#globlas()['userid'] = '10000'
    
    		data = {
    			'username':'nick',
    			'password':'123',
    			'errorCode':1001
    		}
    
    		url = "http://localhost:8000/login/"
    		res = self.run.run_main(url, 'POST', data)
    		
    		#self.assertEqual(res['errorCode'],'1001',"测试失败")
    		
    		print(res)
    
    if __name__ == '__main__':
    	#unittest.main()
    
    	suite = unittest.TestSuite()
    	suite.addTest(TestMethod('test_02'))
    	suite.addTest(TestMethod('test_01'))
    	unittest.TextTestRunner().run(suite)
    

        globlas()['userid'] = '10000'是全局变量。比如第一个test的执行需要依赖第二个test,这时候就需要一个global,让第二个test也可以访问第一个test方法中的变量或者返回值

           assertEqual是断言

          @unittest.skip这个装饰器是用于过滤不需要执行的test

          main方法中的unittest.main()是执行这个类中的所有代码,如果只想只想部分test,可以先创建一个“容器”suite,再往里面addtest,最后执行容器

      unittest.TextTestRunner().run(suite)
    示例三:
    import HTMLTestRunner        
            import unittest
            class MyTest(unittest.TestCase):#继承unittest.TestCase
                def tearDown(self):
                    #每个测试用例执行之后做操作
                    print('111')
                def setUp(self):
                    #每个测试用例执行之前做操作
                    print(22222)
                def test_run(self):
                    # self.assertEqual(1,1)
                    self.assertIs(1,1)
                    #测试用例
                def test_run2(self):
                    # self.assertEqual(1,1)
                    self.assertIs(1,1)
                    #测试用例
                def test_run3(self):
                    # self.assertEqual(1,1)
                    self.assertIs(1,1)
                    #测试用例
                def test_run1(self):
                    # self.assertEqual(1,1)
                    self.assertIs(1,1)
                    #测试用例
            if __name__ == '__main__':
                test_suite = unittest.TestSuite()#创建一个测试集合
                test_suite.addTest(MyTest('test_run1'))#测试套件中添加测试用例
                #test_suite.addTest(unittest.makeSuite(MyTest))#使用makeSuite方法添加所有的测试方法
                fp = open('res.html','wb')#打开一个保存结果的html文件
                runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='api测试报告',description='测试情况')
                #生成执行用例的对象
                runner.run(test_suite)
                #执行测试套件
    

      如果执行了之后无法生成测试报告,那就直接在命令行中执行这个py文件就行了,这个是pycharm的毛病。。。

    可以参考:https://blog.csdn.net/xie_0723/article/details/50825310

    更多uinttest的资料https://www.cnblogs.com/feng0815/p/8045850.html

  • 相关阅读:
    android手机开发网
    Android 使用Google Weather制作天气预报程序
    android反编译xml文件
    在线MSDN
    工作的思考一:业务流和工作管理
    .NET Remoting技术文章汇总
    学习之路十四:客户端调用WCF服务的几种方法小议
    工作的思考二:无效的沟通
    ADO.NET 全面梳理
    工作的思考三:工作质量,计划制定,沟通交流
  • 原文地址:https://www.cnblogs.com/mesunyueru/p/9164406.html
Copyright © 2020-2023  润新知