def run_test(self): data = Excel().get_xls(r"{}/K8S_call_log_save_testdata/data.xlsx".format(TEST_DATA_DIR), "call_log_data") result_data=K8sCallLogSave().run(data) # 获取到接口返回信息 Excel().write_newxls(result_data,self.report_excel,sheet="call_log_data2") #生成测试报告文件--excel time.sleep(2) connectEmail=SendEmail(self.email["addresser"],self.email["addressee"],self.email["smtp"],self.email["user"],self.email["passwd"]) #连接邮箱 connectEmail.email_init(self.report_excel,self.excel_name) #把测试报告发送到指定邮箱 DelDate().del_run(num=3) #删除本地excel文件 self.log.info ("----程序结束----")
class DependData(): def __init__(self,caseid): self.caseid=caseid self.method=Method() self.getdata=GetData() self.excel=Excel() # 获取依赖的响应数据 def get_response_data(self): #caseid = self.get_case_depend(row) row_num = self.excel.get_case_row(self.caseid) url = self.getdata.get_url(row_num) request_method = self.getdata.get_request_method(row_num) request_data = self.getdata.get_request_data(row_num) response_data = self.method.main(request_method, url, request_data) return response_data #获取依赖字段的值 def get_data_value(self,row): depend_data=self.getdata.get_data_depend(row) response_data=self.get_response_data() json_exe=parse(depend_data) madle=json_exe.find(response_data) return [math.value for math in madle][0]
class PassportTestCase(unittest.TestCase): url = Config.get('runner', 'RUNNER_URL') filename = Config.get('runner', 'CASE_URL') sheet_name = 'passport' execl = Excel(filename, sheet_name) def action(self, row, i): url = self.url + row['url'] data = row['data'] result = requests.post(url, data) res = result.json() self.execl.write(i + 2, res['code'], res['msg']) print res self.assertEqual(res['code'], row['code']) @staticmethod def getTestFunc(row, i): def func(self): self.action(row, i) return func
class TestTegister: # 读取测试用例 excel_path = os.path.join(DATADIR, "interfaceCase.xlsx") excel1 = Excel(excel_path, "register_success") cases1 = excel1.get_data() # 发送请求对象 request = Request() @pytest.mark.parametrize("case", cases1) @allure.title("{case[title]}") # 用例名称 @allure.story("注册正常情况") # 特性场景 @allure.description("注册成功") # 用例描述 @allure.tag("注册") # 标签 def test_register_success(self, case): allure.dynamic() with allure.step("第一步:准备数据"): with allure.step("接口地址"): url = conf.get("env", "host") + case["url"] allure.attach( body=url, name="接口请求地址") # , extension=allure.attachment_type.TEXT with allure.step("请求方法"): method = case["method"] allure.attach(body=method, name="接口请求方法", extension=allure.attachment_type.TEXT) headers = eval(conf.get("env", "headers")) with allure.step("请求数据"): case["data"] = replace_data(case["data"]) json = case["data"] allure.attach(body=json, name="用例数据", extension=allure.attachment_type.JSON) with allure.step("预期结果"): expected = eval(case["expected"]) allure.attach(body=case["expected"], name="预期结果", extension=allure.attachment_type.TEXT) row = case["case_id"] + 1 # 发送请求 with allure.step("第二步:获取响应结果"): response = self.request.send_request(url=url, method=method, headers=headers, json=eval(json)) allure.attach(str(response.json()), "响应结果", allure.attachment_type.JSON) res = response.json() with allure.step("第三步:测试结果"): try: assert expected["code"] == res["code"] assert expected["msg"] == res["msg"] except AssertionError as e: self.excel1.write_data(row=None, column=8, value="未通过") log.error(f"用例{case['title']},测试未通过") log.exception(e) raise e else: self.excel1.write_data(row=row, column=8, value="通过") log.info(f"用例{case['title']},测试通过") allure.attach(f"{case['title']}用例测试通过", "测试结果", allure.attachment_type.TEXT)
class Data: col_case_id = 0 col_api = 1 col_is_live = 2 col_is_run = 3 col_method = 4 col_is_header = 5 col_depend_id = 6 col_depend_data = 7 col_depend_key = 8 col_request_data = 9 col_expect = 10 col_result = 11 def __init__(self): self.data = Excel() pass def get_case_id(self, rowx): colx = Data.col_case_id return self.data.get_cell(rowx, colx) def get_api(self, rowx): colx = Data.col_api return self.data.get_cell(rowx, colx) def get_is_live(self, rowx): colx = Data.col_is_live return self.data.get_cell(rowx, colx) def get_is_run(self, rowx): colx = Data.col_is_run return self.data.get_cell(rowx, colx) def get_method(self, rowx): colx = Data.col_method return self.data.get_cell(rowx, colx) def get_is_header(self, rowx): colx = Data.col_is_header return self.data.get_cell(rowx, colx) def get_depend_id(self, rowx): colx = Data.col_depend_id return self.data.get_cell(rowx, colx) def get_depend_data(self, rowx): colx = Data.col_depend_data return self.data.get_cell(rowx, colx) def get_depend_key(self, rowx): colx = Data.col_depend_key return self.data.get_cell(rowx, colx) def get_request_data(self, rowx): colx = Data.col_request_data return self.data.get_cell(rowx, colx) def get_expect(self, rowx): colx = Data.col_expect return self.data.get_cell(rowx, colx) def row_total(self): return self.data.get_rows() def write_passed_result(self, rowx): # 设置样式 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 3 # 5 背景颜色为黄色 # 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, # 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, # 22 = Light Gray, 23 = Dark Gray style = xlwt.XFStyle() style.pattern = pattern # 写入数据并保存 colx = Data.col_result self.data.write_data(rowx, colx, 'PASS', style) def write_failed_result(self, rowx, actual_result): # 设置样式 pattern = xlwt.Pattern() pattern.pattern = xlwt.Pattern.SOLID_PATTERN pattern.pattern_fore_colour = 2 # 5 背景颜色为黄色 # 1 = White, 2 = Red, 3 = Green, 4 = Blue, 5 = Yellow, 6 = Magenta, 7 = Cyan, 16 = Maroon, # 17 = Dark Green, 18 = Dark Blue, 19 = Dark Yellow , almost brown), 20 = Dark Magenta, 21 = Teal, # 22 = Light Gray, 23 = Dark Gray style = xlwt.XFStyle() style.pattern = pattern # 写入数据并保存 colx = Data.col_result self.data.write_data(rowx, colx, actual_result, style)
def __init__(self): self.data = Excel() pass
"region": data_test[3], "time": data_test[4], "type": data_test[5] } if data_test[1] == '': dict_data.pop("caller") elif data_test[2] == '': dict_data.pop("callTime") elif data_test[3] == '': dict_data.pop("region") elif data_test[4] == '': dict_data.pop("time") elif data_test[5] == '': dict_data.pop("type") result = self.call_log_dave_port( json.dumps(dict_data)) #这里为进行接口请求, data_test.append(result) #这里吧接口请求的结果写入到每行的最后一列 data_list.append(data_test) #这里把生成最新的每一列插入到列表data_list中 return data_list #这里吧生成的新二维列表返回出去 if __name__ == '__main__': data = '{"callTime":"2019-04-16 00:00:00","caller":"13694245189","region":"333","time":1,"type":"1"}' t = K8sCallLogSave() data1 = Excel().get_xls( r"{}/K8S_call_log_save_testdata/data.xlsx".format(TEST_DATA_DIR), "call_log_data2") # for i in data1: # print(i) t.run(data1)
def __init__(self,caseid): self.caseid=caseid self.method=Method() self.getdata=GetData() self.excel=Excel()
def download_application_success(): form = GoodNameForm() trials = Trial.objects(good_name__icontains=form.good_name.data) applications = Application.objects(status=1).filter(trial__in=trials) # applications = Application.objects().filter(trial__in=trials) from flask import send_from_directory, make_response import os from common.excel import Excel from urllib.parse import quote recipients = list() path = '/tmp/' filename = form.good_name.data + '-发货名单.xls' if os.path.exists(path + filename): os.remove(path + filename) excel = Excel(filename=path + filename) column = 0 excel.write(column, 0, content='收方姓名') excel.write(column, 1, content='收方联系方式') excel.write(column, 2, content='收方地址') excel.write(column, 3, content='商品名称') for app in applications: column += 1 if app.member.address.province_name == app.member.address.city_name: province_city = app.member.address.city_name else: province_city = app.member.address.province_name + app.member.address.city_name excel.write(column, 0, content=app.member.address.username) excel.write(column, 1, content=app.member.address.tel_number) excel.write(column, 2, content=province_city + app.member.address.county_name + app.member.address.detail_info) excel.write(column, 3, content=app.trial.good_name) recipients.append({ 'name': app.member.address.username, 'mobile': app.member.address.tel_number, 'address': province_city + app.member.address.county_name + app.member.address.detail_info, 'good_name': app.trial.good_name, }) # Log.info(recipients) excel.save() response = make_response( send_from_directory(path, filename, as_attachment=True)) response.headers["Content-Disposition"] = "attachment; filename={}".format( quote(filename.encode().decode('utf-8'))) return response
def __init__(self): self.excel=Excel() self.method=Method()
class GetData(): def __init__(self): self.excel=Excel() self.method=Method() def get_case_lines(self): return self.excel.get_lines() def get_id(self,row): col=DataConfig.id return self.excel.get_cell_value(row,col) def get_name(self,row): col=DataConfig.name return self.excel.get_cell_value(row,col) def get_url(self,row): col=DataConfig.url return self.excel.get_cell_value(row,col) def get_is_run(self,row): col=DataConfig.is_run flag=None is_run=self.excel.get_cell_value(row,col) if is_run=='yes': flag=True else: flag=False return flag def get_request_method(self,row): col=DataConfig.method return self.excel.get_cell_value(row,col) def get_request_data(self,row): col=DataConfig.data request_data=self.excel.get_cell_value(row,col) return json.loads(request_data) def get_expect(self,row): col=DataConfig.expect return self.excel.get_cell_value(row,col) def write_result(self,row,value): col=DataConfig.result self.excel.write_data(row,col,value) def write_response_data(self,row,value): col=DataConfig.response value=json.dumps(value) self.excel.write_data(row,col,value) def get_case_depend(self,row): col=DataConfig.case_depend case_depend=self.excel.get_cell_value(row,col) if case_depend=='': return None else: return case_depend def get_data_depend(self,row): col=DataConfig.data_depned return self.excel.get_cell_value(row,col) def get_data_key_depend(self,row): col=DataConfig.data_key_depend return self.excel.get_cell_value(row,col)
def send_sms_port(self,appid,phone,templateId): "发送短信接口请求" data='{"appid" : "%s","phone" : "%s","templateId" : "%s"}'.replace(' ','')%(appid,phone,templateId) header={"time":self.time, "sign":self.getSign(data),"Content - Type": "application/json", } data_new = json.loads(data) url=self.yaml["url"]["send_sms"] response = requests.post(url, headers=header, json=data_new) # res=json.loads(response.text) print(response.text) return response.text def run(self,excel_data): data_list=[] #定义要一个空列表 for data_test in excel_data: #excel_data为测试数据,二维列表的形式 if int(data_test[0])==0: #先判断第一行第一列为0的时候,直接在这 一行的最后增加一个测试结果 data_test.append("测试结果") else: result=self.send_sms_port(data_test[1],data_test[2],data_test[3]) #这里为进行接口请求, data_test.append(result) #这里吧接口请求的结果写入到每行的最后一列 data_list.append(data_test) #这里把生成最新的每一列插入到列表data_list中 return data_list #这里吧生成的新二维列表返回出去 if __name__ == '__main__': t=K8s_send_sms() data_dir=os.path.join(TEST_DATA_DIR,'K8S_msg_card_testdata') data_excel_dir=os.path.join(data_dir,'send_msg_data.xlsx') data_excel = Excel().get_xls(data_excel_dir,'send_msg') result=t.run(data_excel)