示例#1
0
 def get_data_for_json(self, row):
     operjson = OperationJson()
     operjson.get_data(self.get_request_data(row))
示例#2
0
 def get_data_form_json(self, row):
     opera_json = OperationJson()
     request_data = opera_json.get_data(self.get_request_data(row))
     return request_data
 def write_cookie(self):
     cookie = requests.utils.dict_from_cookiejar(self.get_cookie())
     op_json = OperationJson()
     op_json.write_data(cookie)
示例#4
0
文件: unit.py 项目: 50how/API_TEST
    def go_on_run(self,i):
        pass_count = []
        fail_count = []
        request_data_file = ''
        res = None
        # 获取用例数
        rows_count = self.data.get_case_lines()
        # 第一行索引为0
        # for i in range(1, rows_count):
        is_run = self.data.get_is_run(i)
        if is_run:
            url = self.data.get_request_url(i)
            method = self.data.get_request_method(i)
            #request_data = json.load(self.data.get_request_data(i))
            expect = self.data.get_expcet_data(i)
            token = self.data.is_token(i)
            depend_case = self.data.is_depend(i)
            headers= self.data.get_headers(i)
            r = self.data.get_request_data(i)
            self.data.write_respond_data(i, '')#清空响应信息


            # 上传文件处理
            if r!=None:
                if r.endswith('jpg')| r.endswith('png')| r.endswith('docx')| r.endswith('doc')| r.endswith('ppt')| r.endswith('pptx'):#其他文件暂不考虑
                    log().info('读取上传文件')
                    file_payload = {'file': (r, open('../' + r, 'rb'))}#, "image/jpg"
                    m = MultipartEncoder(file_payload)
                    headers['Content-Type'] = m.content_type
                    request_data = m
                    log().info('生成上传文件Multipart')
                #处理依赖
                elif depend_case != None:
                    self.depend_data = DependentData(depend_case)
                    # 获取依赖key和value [id1:3]
                    depend_response_data = self.depend_data.get_data_for_key(i)  # {caseid:{id1:1,id2:2}}
                    for caseid in depend_response_data:
                        for k in depend_response_data[caseid]:
                            y = '${' + caseid + ',' + k + '}'
                            if r.find(y):
                                t = r.replace(y, str(depend_response_data[caseid][k]))
                                r = t
                    log().info('依赖(最终)请求拼接完成\n%s', r)
                    request_data = json.loads(r, encoding='utf-8')

                else:# 没有依赖直接转换输出
                        log().info('获取没有依赖的请求参数\n%s',r)
                        request_data =json.loads(r,encoding='utf-8')

            else:
                request_data={}

            # 如果token字段值为write则将该接口的返回的token写入到token.json文件,如果为yes则读取token.json文件
            if token == "write":
                log().info('写入token')
                res = self.run_method.run_main(method, url,request_data,headers)
                op_header = OperationHeader(res)
                op_header.write_token()
            elif token == 'yes':
                op_json = OperationJson("../dataconfig/token.json")
                token = op_json.get_data('data')
                log().info("获取token\n%s",token)
                headers.update(token)
                #request_data = dict(request_data, **token)  # 把请求数据与登录token合并,并作为请求数据
                res = self.run_method.run_main(method, url,request_data,headers)

            else:

                res = self.run_method.run_main(method, url,request_data,headers)
            log().info("响应结果\n%s", res)
            self.data.write_respond_data(i, res)

            if expect != None:
                if self.com_util.is_contain(expect, res):
                    self.data.write_result(i, "Pass")
                    pass_count.append(i)

                else:
                    self.data.write_result(i, "failed")
                    fail_count.append(i)

            else:

                log().error('用例ID:case-%s,预期结果不能为空',i)

            return res
示例#5
0
 def get_data_for_json(self, rowvalue):
     #因为不是所有的情况都会需要使用此方法,所有不需要在构造函数中将此类进行实例化。但是在构造函数中实例化也没有问题
     opera_json = OperationJson()
     request_data = opera_json.get_data(self.get_request_data(rowvalue))
     return request_data
示例#6
0
    def go_on_run(self):
        """程序执行"""
        pass_count = []
        fail_count = []
        res = None
        # 获取用例数
        rows_count = self.data.get_case_lines()
        # 第一行索引为0
        for i in range(1, rows_count):
            is_run = self.data.get_is_run(i)
            if is_run:
                url = self.data.get_request_url(i)
                method = self.data.get_request_method(i)
                request_data = self.data.get_data_for_json(i)
                expect = self.data.get_expcet_data(i)
                header = self.data.is_header(i)
                depend_case = self.data.is_depend(i)
                change_sql = self.data.get_sql_data(i)
                try:
                    if depend_case != None:
                        self.depend_data = DependentData(depend_case)
                        # 获取依赖的响应数据
                        depend_response_data = self.depend_data.get_data_for_key(
                            i)
                        # 获取依赖的key
                        depend_key = self.data.get_depend_field(i)
                        # 更新请求字段
                        request_data[depend_key] = depend_response_data
                    # 修改sql
                    if change_sql != None:
                        self.data.update_sql(i)

                    if header == "write":
                        res = self.run_method.run_main(method, url,
                                                       request_data)
                        op_header = OperationHeader(res)
                        op_header.write_token()
                    elif header == 'yes':
                        op_json = OperationJson("../dataconfig/cookie.json")
                        token = op_json.get_data('data')
                        request_data = dict(request_data,
                                            **token)  # 把请求数据与登录token合并,并作为请求数据

                        res = self.run_method.run_main(method, url,
                                                       request_data)
                    else:
                        res = self.run_method.run_main(method, url,
                                                       request_data)
                except Exception as e:
                    res = "运行失败"
                    print(f"第{i}条用例{res},错误原因{e}")

                if expect != None:
                    if self.com_util.is_contain(expect, res):
                        self.data.write_result(i, "Pass")
                        pass_count.append(i)
                    else:
                        self.data.write_result(i, res)
                        fail_count.append(i)
                else:
                    print(f"用例ID:case-{i},预期结果不能为空")

        # 发送邮件
        # self.send_email.send_main(pass_count, fail_count)

        print(f"通过用例数:{len(pass_count)}")
        print(f"失败用例数:{len(fail_count)}")
示例#7
0
 def write_token(self):
     op_json = OperationJson()
     op_json.write_data(self.get_response_token())