Exemple #1
0
class TestCase(unittest.TestCase):
    def setUp(self):
        Current_class = os.path.basename(__file__)
        print(Current_class)
        self.log = Log(Current_class)
        #关联参数存储字典
        self.OverallData = dict()
        #关联参数生成
        self.LinkedValue = None

        self.interfacetest = InterfaceTest()

    def tearDown(self):
        pass

    @data(*datalist)
    def testJDproduct(self, Data):
        #测试用用例描述
        Response, Result = None, None
        print("用例名称:{}".format(Data["CaseName"]))
        print("LinkedData" + Data["LinkedData"])
        if (Data["LinkedData"] != ''):
            self.LinkedValue = str(
                Data["LinkedData"]) + "=" + self.OverallData[str(
                    Data["LinkedData"])]
        self.log.info("Headers:%s" % (Data["Headers"]))
        if (self.LinkedValue != None):
            Result, Response = self.interfacetest.testrequest(
                Data["URL"], Data["URI"], Data["Param"] + self.LinkedValue,
                Data["RequestForm"], Data["File"], Data["CheckPoint"],
                Data["Headers"], Data["ID"], Data["CaseName"])
        else:
            Result, Response = self.interfacetest.testrequest(
                Data["URL"], Data["URI"], Data["Param"], Data["RequestForm"],
                Data["File"], Data["CheckPoint"], Data["Headers"], Data["ID"],
                Data["CaseName"])
        # print("Response:%s"%(Response))
        if (re.findall(r"<td>(.*?)</td>", Response) != None):
            self.OverallData["id"] = re.findall(r"<td>(.*?)</td>", Response[0])
        self.assertEqual("成功", Result)
    def testrequest(self, URL, URI, Param, RequestForm, File, CheckPoint,
                    Headers, num, CaseName):
        Current_class = os.path.basename(__file__)
        print(Current_class)
        log = Log(Current_class)
        # 可选
        '''
        Headers = {'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'}
        Headers = {'Content-Type':'application/json;charset=utf-8'}
        '''
        # 生成请求类的对象
        req = Interface_Request()
        # req_get = req.req_get(url,params = params,Headers = Headers)
        # 请求前缀和接口地址的拼接
        full_url = URL + URI

        # 判断请求类型
        if (RequestForm == 'GET'):
            # 调用请求类的函数,得到返回结果
            self.req_test = req.req_get(full_url, Param, Headers)

        # elif (RequestForm == 'POST' and DataForm == 'Form'):
        #     self.req_test = req.post_kv(full_url, Param, Headers)
        # elif (RequestForm == 'POST' and DataForm == 'Json'):
        #     Headers = {'Content-Type': 'application/json;charset=utf-8'}
        #     self.req_test = req.post_json(full_url, Param, Headers)
        # elif (RequestForm == 'POST' and DataForm == 'File'):
        #     Headers = {'Content-Type': 'multipart/form-data;boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA'}
        #     self.req_test = req.post_json(full_url, Param, Headers)

        elif (RequestForm == 'POST'
              and re.search("application/x-www-form-urlencoded", Headers)):
            self.req_test = req.post_kv(full_url, Param, Headers)
        elif (RequestForm == 'POST'
              and re.search("application/json", Headers)):
            self.req_test = req.post_json(full_url, Param, Headers)
        elif (RequestForm == 'POST'
              and re.search("multipart/form-data", Headers)):
            Headers = {'Content-Type': 'multipart/form-data'}
            self.req_test = req.post_json(full_url, File, Headers)
        else:
            print("请求不通过,请检查case用例配置:{0}-{1}".format(num, CaseName))
            log.error("请求不通过,请检查case用例配置:{0}-{1}".format(num, CaseName))
            return "请求不通过,请检查case用例配置:{0}-{1}".format(num, CaseName), ''

        # 检查点与响应数据做对比
        if (re.search(CheckPoint, str(self.req_test))):
            log.info("用例编号" + str(num) + " " + CaseName + "接口执行成功")
            return "成功", str(self.req_test)
        else:
            log.error("用例编号" + str(num) + " " + CaseName + "接口执行失败")
            return "失败", str(self.req_test)


# #请求前缀
# url = "http://p.3.cn"
# #接口地址
# uri = "/prices/mgets"
# params = {"skuIds":"100004770249","type":"1"}
# Headers = {}
# #请求类型
# RequestForm = 'GET'
# #数据类型
# dataform = 'json'
# #检查点
# checkpoint = '"id":"J_100004770249"'
#
# it = InterfaceTest()
# it.testrequest(url,uri,params,RequestForm,dataform,checkpoint,Headers)