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)                                   #执行用例

 

 
posted @ 2020-06-17 10:03  疯狂的机器人  阅读(422)  评论(2编辑  收藏  举报