예제 #1
0
 def assertion(self, data, expected):
     result = []
     com_flag = True
     for i in expected:  # 校验接口返回,返回结果是一个以True或False的列表
         for k, v in i.items():
             if k == "eq":
                 Log.logger(
                     "Equal Assert!!! Expected_value =Actual_value ... ")
                 flag = self.eq_assert(data, v)
                 result.append(flag)
             elif k == "co":
                 Log.logger(
                     "Contain Assert!!! Actual_value contains Expected_value ... "
                 )
                 flag = self.co_assert(data, v)
                 result.append(flag)
             elif k == "nq":
                 Log.logger(
                     "Not Equal Assert!!! Expected_value !=Actual_value ... "
                 )
                 flag = self.nq_assert(data, v)
                 result.append(flag)
     for i in result:  # 对断言列表进行校验,只要含有Flase测试结果就为False
         if i == False:
             com_flag = False
             break
     return com_flag
예제 #2
0
 def set_var(self, path, di, res):
     for k, v in di.items():
         if "headers" in v:
             headers = res.headers
             temp = v.split('.')
             for j in range(1, len(temp)):
                 str = temp[j]
                 text = headers[str]
         elif "body" in v:
             body = res.text
             if isinstance(body, dict):  # 判断是否为字典
                 pass
             else:
                 body = json.loads(body)  # Json字符串转换成字典
             temp = v.split('.')
             for j in range(1, len(temp)):
                 str = temp[j]
                 text = body[str]
         di[k] = text
     var.update(di)
     Log.logger("Global Var:" + json.dumps(var))
     # print("设定全局变量"+var)
     return var
예제 #3
0
    def test_api(self, name, method, url, headers, params, expected, export):
        allure.dynamic.title("请求接口:{i}".format(i=url))  # 设定用例标题
        allure.dynamic.description("用例描述:{i}".format(i=name))  # 设定用例描述
        # com_flag = True    # 设置默认的断言结果
        headers = obj.get_var(headers)    # 判断请求头中是否有变量,有的话需获取变量值
        Log.logger("Request Headers:"+str(headers))
        params = obj.get_var(params)    # 判断请求消息体中是否有变量,有的话需获取变量值
        Log.logger("Request Body:"+str(params))
        if method == "GET":
            data = Base.base_request(url=url, method=method, headers=headers, params=params)
        elif method == "POST":
            data = Base.base_request(url=url, method=method, headers=headers, data=params)
        Log.logger("Response Headers:" + str(data.headers))
        Log.logger("Response Body:" + str(data.text))
        if export == "NULL":      # 接口返回是否需要输出变量供其他接口使用
            pass
        else:
            obj.set_var(path, export, data)
        com_flag = Assert.assertion(data,expected)

        assert data.status_code == 200, "Test Failed!!!"
        assert com_flag, "Test Failed!!!"
예제 #4
0
    def eq_assert(self, data, expected):
        expected = expected
        if expected[0] == "code":
            Log.logger("Expected_value: {a}".format(a=expected[1]))
            Log.logger("Actual_value: {a}".format(a=data.status_code))
            if data.status_code == expected[1]:
                return True
            else:
                return False

        if "headers" in expected[0]:
            headers = data.headers
            temp = expected[0].split('.')
            for i in range(1, len(temp)):
                str = temp[i]
                text = headers[str]
            Log.logger("Expected_value: {a}".format(a=expected[1]))
            Log.logger("Actual_value: {a}".format(a=text))
            if text == expected[1]:
                return True
            else:
                return False

        if "body" in expected[0]:
            body = data.text
            # if (type(body).__name__=='dict'):    # 判断是否为字典
            if isinstance(body, dict):  # 判断是否为字典
                pass
            else:
                body = json.loads(body)  # 字符串转换成字典
            temp = expected[0].split('.')
            for i in range(1, len(temp)):
                str = temp[i]
                text = body[str]
            Log.logger("Expected_value: {a}".format(a=expected[1]))
            Log.logger("Actual_value: {a}".format(a=text))
            if text == expected[1]:
                return True
            else:
                return False
예제 #5
0
 def method_logging(self):
     Log.logger("Start Method...")
     yield
     Log.logger("Finnish Method...")
예제 #6
0
 def class_logging(self):
     Log.logger("Start Class...")
     yield
     Log.logger("Finish Class...")