• Python3+requests+unittest+log+excel+HTMLTestRunner+email框架接口自动化案例⑻——测试用例


    一、测试用例

    1.testcaseF1.py:对应API_TestCase.xlsx中的F1数据

    # _*_ coding:utf-8 _*_
    import unittest,paramunittest,json
    from  Common import configHttp,readExcel,readConfig,getheader,log
    
    excel= readExcel.readExcel('API_TestCase.xlsx')                   #获取excel文件
    names=excel.get_sheetnames()                                      #获取sheel
    testcase=excel.get_xlsx(names[0])                                 #获取指定shell的case
    baseurl = readConfig.Read_Config().get_info('HTTP','baseurl')     #获取配置文件的baseurl
    headers= getheader.host_headers()                                  #获取heders
    log_info =log.logger                                              #导入log系统
    
    @paramunittest.parametrized(*testcase)
    class testUserLogin(unittest.TestCase):
        def setParameters(self,NO,case_name, method,path, data,code):
            """
            从 excel 中获取用例
            :param NO: 用例序号
            :param case_name: 用例名称
            :param method: HTTP方法
            :param path: 路径
            :param data: 参数
            :param code: 响应
            """
            self.case_name =NO
            self.case_name = str(case_name)
            self.method = str(method)
            self.path = baseurl+str(path)
            self.data = json.loads(data)                     #字符串转字典
            self.code=code
    
        def setUp(self):                                     #每个case执行前执行
            log_info.info('---%s %s 测试开始---' % (names[0],self.case_name))
    
        def testcaseF1(self):
            self._testMethodName = self.case_name                           #当前函数方法+测试用例测试函数名称
            #self._testMethodDoc= self.case_name                            #测试函数文档
            info=configHttp.req(self.method,self.path,params=self.data)     #调用http请求方法
            #print(info.json())                                              #打印请求结果
            if self.case_name in ['获取设备任务信息']:
                self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))      #断言
            else:
                self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))   #断言
    
        def tearDown(self):                                 #每个case执行后执行
            log_info.info('---%s %s 测试结束---' % (names[0],self.case_name))
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()                        #创建测试套件对象
        suite.addTest(unittest.makeSuite(testUserLogin))    #添加测试用例到套件中
        runner = unittest.TextTestRunner()                  #使用TextTestRunner创建一个运行器
        runner.run(suite)                                   #执行用例

    2.testcaseF2.py:对应API_TestCase.xlsx中的F2数据

    # _*_ coding:utf-8 _*_
    import unittest,paramunittest,json
    from  Common import configHttp,readExcel,readConfig,getheader,log
    
    excel= readExcel.readExcel('API_TestCase.xlsx')                   #获取excel文件
    names=excel.get_sheetnames()                                      #获取sheel
    testcase=excel.get_xlsx(names[1])                                 #获取指定shell的case
    baseurl = readConfig.Read_Config().get_info('HTTP','baseurl')     #获取配置文件的baseurl
    headers= getheader.host_headers()                                  #获取heders
    log_info =log.logger                                              #导入log系统
    
    @paramunittest.parametrized(*testcase)
    class testUserLogin(unittest.TestCase):
        def setParameters(self,NO,case_name, method,path, data,code):
            """
            从 excel 中获取用例
            :param NO: 用例序号
            :param case_name: 用例名称
            :param method: HTTP方法
            :param path: 路径
            :param data: 参数
            :param code: 响应
            """
            self.case_name =NO
            self.case_name = str(case_name)
            self.method = str(method)
            self.path = baseurl+str(path)
            self.data = json.loads(data)
            self.code=int(code)                              #字符串转字典类型
    
        def setUp(self):                                                   #每个case执行前执行
            log_info.info('---%s %s 测试开始---' % (names[1],self.case_name))
    
        def testcaseF2(self):
            self._testMethodName = self.case_name                           #当前函数方法+测试用例测试函数名称
            #self._testMethodDoc= self.case_name                            #测试函数文档
            info=configHttp.req(self.method,self.path,json=self.data)#调用http请求方法
            #print(info.json())
            if self.case_name in ['创建设备任务信息']:
                self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))#断言
            else:
                self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))#断言
    
        def tearDown(self):                                 #每个case执行后执行
            log_info.info('---%s %s 测试结束---' % (names[1],self.case_name))
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()                        #创建测试套件对象
        suite.addTest(unittest.makeSuite(testUserLogin))    #添加测试用例到套件中
        runner = unittest.TextTestRunner()                  #使用TextTestRunner创建一个运行器
        runner.run(suite)                                   #执行用例

    3.testcaseF3.py:对应API_TestCase.xlsx中的F3数据

    # _*_ coding:utf-8 _*_
    import unittest,paramunittest,json
    from  Common import configHttp,readExcel,readConfig,getheader,getrandom,log
    
    excel= readExcel.readExcel('API_TestCase.xlsx')                   #获取excel文件
    names=excel.get_sheetnames()                                      #获取sheel
    testcase=excel.get_xlsx(names[2])                                 #获取指定shell的case
    baseurl = readConfig.Read_Config().get_info('HTTP','baseurl')     #获取配置文件的baseurl
    headers= getheader.host_headers()                                  #获取heders
    log_info =log.logger                                              #导入log系统
    
    @paramunittest.parametrized(*testcase)
    class testUserLogin(unittest.TestCase):
        def setParameters(self,NO,case_name, method,path, data,code):
            """
            从 excel 中获取用例
            :param NO: 用例序号
            :param case_name: 用例名称
            :param method: HTTP方法
            :param path: 路径
            :param data: 参数
            :param code: 响应
            """
            self.case_name =NO
            self.case_name = str(case_name)
            self.method = str(method)
            self.path = baseurl+str(path)
            self.data = json.loads(data)
            self.code=int(code)                              #字符串转字典类型
    
        def setUp(self):                                                   #每个case执行前执行
            log_info.info('---%s %s 测试开始---' % (names[2],self.case_name))
    
        def testcaseF3(self):
            self._testMethodName = self.case_name                           #当前函数方法+测试用例测试函数名称
            #self._testMethodDoc= self.case_name                            #测试函数文档
            if self.case_name in ['更新设备名称','deviceid不存在']:
                data = {}
                data['displayname'] = getrandom.randomstr()
                info = configHttp.req(self.method, self.path, json=data)#调用http请求方法
                #print(info.json())
                if self.case_name in ['更新设备名称']:
                    self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))#断言
                else:
                    self.assertEqual(info.json()['code'], self.code, ('%s 断言失败' % self.case_name))#断言
            else:
                info = configHttp.req(self.method, self.path, json=self.data)
                #print(info.json())
                self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))#断言
    
        def tearDown(self):                                 #每个case执行后执行
            log_info.info('---%s %s 测试结束---' % (names[2],self.case_name))
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()                        #创建测试套件对象
        suite.addTest(unittest.makeSuite(testUserLogin))    #添加测试用例到套件中
        runner = unittest.TextTestRunner()                  #使用TextTestRunner创建一个运行器
        runner.run(suite)                                   #执行用例

    4.testcaseF4.py:对应API_TestCase.xlsx中的F4数据

    # _*_ coding:utf-8 _*_
    import unittest,paramunittest,json,time
    from  Common import configHttp,readExcel,readConfig,getheader,log
    
    excel= readExcel.readExcel('API_TestCase.xlsx')                   #获取excel文件
    names=excel.get_sheetnames()                                      #获取sheel
    testcase=excel.get_xlsx(names[3])                                 #获取指定shell的case
    baseurl = readConfig.Read_Config().get_info('HTTP','baseurl')     #获取配置文件的baseurl
    headers= getheader.host_headers()                                  #获取heders
    log_info =log.logger                                              #导入log系统
    
    @paramunittest.parametrized(*testcase)
    class testUserLogin(unittest.TestCase):
        def setParameters(self,NO,case_name, method,path, data,code):
            """
            从 excel 中获取用例
            :param NO: 用例序号
            :param case_name: 用例名称
            :param method: HTTP方法
            :param path: 路径
            :param data: 参数
            :param code: 响应
            """
            self.case_name =NO
            self.case_name = str(case_name)
            self.method = str(method)
            self.path = baseurl+str(path)
            self.data = json.loads(data)
            self.code=int(code)                              #字符串转字典类型
    
        def setUp(self):                                                   #每个case执行前执行
            log_info.info('---%s %s 测试开始---' % (names[3],self.case_name))
    
        def testcaseF4(self):
            self._testMethodName = self.case_name                           #当前函数方法+测试用例测试函数名称
            #self._testMethodDoc= self.case_name                            #测试函数文档
            if self.case_name in ['删除设备任务信息']:
                create = excel.get_xlsx(names[1])[0]
                info_jobid = configHttp.req(create['method'],baseurl + create['path'],json=json.loads(create['data']))#调用http请求方法
                time.sleep(5)
                info = configHttp.req(self.method, self.path, json=info_jobid.json())#调用http请求方法
                #print(info.json())
                self.assertEqual(info.status_code, self.code,('%s 断言失败' % self.case_name))#断言
            else:
                info = configHttp.req(self.method, self.path, json=self.data)
                #print(info.json())
                self.assertEqual(info.json()['code'], self.code,('%s 断言失败' % self.case_name))#断言
    
        def tearDown(self):                                 #每个case执行后执行
            log_info.info('---%s %s 测试结束---' % (names[3],self.case_name))
    
    if __name__ == '__main__':
        suite = unittest.TestSuite()                        #创建测试套件对象
        suite.addTest(unittest.makeSuite(testUserLogin))    #添加测试用例到套件中
        runner = unittest.TextTestRunner()                  #使用TextTestRunner创建一个运行器
        runner.run(suite)                                   #执行用例
     
    —————————————————————————————— 选择正确的事、再把事做正确 ——————————————————————————————
  • 相关阅读:
    loj#2540. 「PKUWC2018」随机算法
    loj#2538. 「PKUWC2018」Slay the Spire
    loj#2537. 「PKUWC2018」Minimax
    CF662C Binary Table
    bzoj4589: Hard Nim
    【HDU5909】Tree Cutting(FWT)
    P3175 [HAOI2015]按位或
    P4389 付公主的背包
    P4233 射命丸文的笔记
    GFS分布式文件系统环境部署与管理
  • 原文地址:https://www.cnblogs.com/airb/p/13328216.html
Copyright © 2020-2023  润新知