zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/mesunyueru/p/9164406.html
Copyright © 2011-2022 走看看