def teardown(self): teardownSteps = get_templateSteplistByTab( GlobalConfig.TestCaseFilePath, TearDown="True") if teardownSteps: self.excute_step_with_StepsTemplate(teardownSteps) stepvaluepool = StepValuePool() stepvaluepool.clear_all()
def demoLoginSucStep(self, parameterID): stepParameters = ParameterHelper.getStepParameters(parameterID) parameters = stepParameters["Parameters"] #下面的这两句用来从上一个接口获取参数,如果xml里没写这个参数就试着去参数池子里找(池子里的参数是之前的步骤存的) parameters["mobile"] = ParameterHelper.get_selected_param( parameters, "mobile") parameters["ticket"] = ParameterHelper.get_selected_param( parameters, "ticket") print("Params: {}".format(parameters)) expect_result = stepParameters["Expect"] if expect_result == None: expect_result = {"code": 0} #signed_params = sign_method_name(parameters) #demo不提供签名方法,框架xml里加了join_sign前缀的参数才参与签名 #res_txt = requests.get(self.url, signed_params) #http(s)的接口就直接用requests库了 #res_dict = json.loads(res_txt.text) #拿到实际结果 res_dict = { "code": 0, "message": "success", "result": { "token": "test_token", "info": "test" } } #demo不实际发送,直接定义一个返回结果 valuepool = StepValuePool() valuepool.put_value("token", res_dict["result"]["token"]) #把token存起来给别的接口用 AssertHelper.assert_dict_contain_after_logging(expect_result, res_dict) #框架提供的断言包含方法
def get_selected_param(params, key): if key in params: return params[key] if "join_sign" in params: if key in params["join_sign"]: return params["join_sign"][key] valuepool = StepValuePool() return valuepool.get_value(key)
def setup(self): stepvaluepool = StepValuePool() setupSteps = get_templateSteplistByTab(GlobalConfig.TestCaseFilePath, SetUp="True") if setupSteps: self.excute_step_with_StepsTemplate(setupSteps)
def demoPreLoginSucStep(self,parameterID): ''' :desc:这个方法一般用来跑我们期望成功的case,参数里不写手机号时支持随机生成,整个接口成功后把ticket存起来给后其他接口用 :param parameterID: 就是每一组testcase里的每个step里的parameterID,代表一组参数 ''' stepParameters = ParameterHelper.getStepParameters(parameterID) #框架封装好的根据paramterID解析出该组参数的方法 parameters = stepParameters["Parameters"] #取出要发送的参数部分 if "mobile" not in parameters: #如果参数里没有手机号,则用框架提供的方法随机生成一个,动态覆盖更多情况 parameters["mobile"] = int(random_phone()) print("Params: {}".format(parameters)) expect_result = stepParameters["Expect"] #取出期望结果部分 if expect_result == None: #有的参数可以同时用于成功或失败的方法,没有写期望结果,我们就赋一个默认值 expect_result = {"code": 0} #signed_params = sign_method_name(parameters) #对参数进行签名加密等,demo不提供签名算法 #res_txt = requests.get(self.url, signed_params) #http(s)的接口就直接用requests库了 #res_dict = json.loads(res_txt.text) #拿到实际结果 res_dict = {"code": 0,"message": "success","result":{"ticket": "i'm a ticket", "info": "test"}} #demo不实际发送,直接定义一个返回结果 valuepool = StepValuePool() #框架提供的单例模式的进程池 valuepool.put_value("mobile", parameters["mobile"]) #把手机号存起来给后面的接口用 valuepool.put_value("ticket", res_dict["result"]["ticket"]) #这里把ticket存起来 AssertHelper.assert_dict_contain_after_logging(expect_result, res_dict) #框架提供的断言包含方法
def set_params(params,key,value): if params == None: params = {} params[key] = value @staticmethod def set_join_sign_params(params,key,value): if params == None: params = {} if "join_sign" not in params: params.setdefault("join_sign") params["join_sign"] = {} params["join_sign"][key] = value if __name__ == '__main__': params = {'join_sign': {'status': 1, 'uid': '154353'}, 'start_ts': 1560000000} key = 'order_id' valuepool = StepValuePool() valuepool.put_value("order_id", "1222") valuepool.put_value("product_id", "1212121") print(valuepool.get_value("order_id")) params["join_sign"]["order_id"] = ParameterHelper.get_selected_param(params,key) print(params)
def teardownfinal(self): stepvaluepool = StepValuePool() stepvaluepool.clear_all()