class DependentData: def __init__(self, case_id): self.case_id = case_id self.run_method = RunMethod() self.opera_excel = OperationExcel() self.data = GetData() # 获取依赖数据的行号 def get_depend_row(self): row_num = self.opera_excel.get_row_num(self.case_id) return row_num # 获取依赖行的数据 def get_depend_line_data(self): row_data = self.opera_excel.get_row_data(self.case_id) return row_data # 执行依赖数据,获取接口返回的数据 def get_dependent_data(self): row_num = self.opera_excel.get_row_num( self.case_id) # 根据依赖的case_id获取依赖数据的行号 request_data = self.data.get_request_data(row_num) # 根据行号获取请求的数据 url = self.data.get_request_url(row_num) headers = self.data.get_is_header(row_num) method = self.data.get_request_method(row_num) res = self.run_method.run_main(method, url, request_data, headers) return json.loads(res) # 根据接口返回的数据,获取依赖字段对应的值 def get_dependent_values(self, row): depend_key = self.data.get_depend_key(row) # 获取依赖的字段key response_data = self.get_dependent_data() # 获取依赖接口返回的数据 json_exe = parse(depend_key) madle = json_exe.find(response_data) return [math.value for math in madle][0]
def run_dependdent(self): row_num = OperationExcel().get_row_num(self.case_id) url = Get_Token().get_url( client_type=GetData().get_client_type(row_num), api=GetData().get_api(row_num)) method = GetData().get_request_method(row_num) data = GetData().get_data(row_num) data = json.loads(data) header = Get_Token().get_header(row_num) res = RunMethod().run_main(method, url, header, data) return res.json()
def __init__(self): self.operation_excel = OperationExcel()
class GetData: def __init__(self): self.operation_excel = OperationExcel() #去获取excel 的行数,也就是用例的个数 def get_case_lines(self): return self.operation_excel.get_lines() #获取是否执行 def get_is_run(self, row): col = data_conf.get_run() run_model = self.operation_excel.get_cell_value(row, col) if run_model == 'yes': flag = True else: flag = False return flag #获取case名称 def get_case_name(self, row): col = data_conf.get_case_name() case_name = self.operation_excel.get_cell_value(row, col) return case_name #获取请求方法 def get_request_method(self, row): col = data_conf.get_runway() request_method = self.operation_excel.get_cell_value(row, col) return request_method #获取客户端类型 新零售 还是微商城 def get_client_type(self, row): col = data_conf.get_client_type() client_type = self.operation_excel.get_cell_value(row, col) return client_type #获取请求接口URL def get_request_url(self, row): host_col = data_conf.get_host() api_col = data_conf.get_api() url = self.operation_excel.get_cell_value( row, host_col) + self.operation_excel.get_cell_value(row, api_col) return url def get_api(self, row): api_col = data_conf.get_api() api = self.operation_excel.get_cell_value(row, api_col) return api #获取请求数据 def get_data(self, row): col = data_conf.get_data() data = self.operation_excel.get_cell_value(row, col) return data #通过关键字拿到data数据 def get_data_for_json(self): oper_json = OperationJson() request_data = oper_json.get_data() return request_data def get_header(self, row): col = data_conf.get_header() header = self.operation_excel.get_cell_value(row, col) return header def get_expect_data(self, row): col = data_conf.get_expect() expect_data = self.operation_excel.get_cell_value(row, col) return expect_data # 写入数据 def write_result(self, row, value): col = int(data_conf.get_result()) self.operation_excel.write_excel(row, col, value) #获取依赖数据的key def get_depend_key(self, row): col = int(data_conf.get_data_depend()) depend_key = self.operation_excel.get_cell_value(row, col) if depend_key == '': return None else: return depend_key #判断是否有case依赖 def is_depend(self, row): col = int(data_conf.get_case_depend()) depend_case_id = self.operation_excel.get_cell_value(row, col) if depend_case_id == '': return None else: return depend_case_id #获取数据依赖字段 def get_depend_field(self, row): col = int(data_conf.get_field_depend()) data = self.operation_excel.get_cell_value(row, col) if data == '': return None else: return data
import unittest # 测试用例是在unittest框架下编写 from interface.add_department import AddDepartment from common.get_keyword import GetKeyword from common.operation_excel import OperationExcel import ddt oper = OperationExcel("../data/add_dep.xlsx") # 表格路径 test_data = oper.get_data_by_index() @ddt.ddt class TestAddDep(unittest.TestCase): def setUp(self) -> None: self.add_dep = AddDepartment() @ddt.data(*test_data) def test_add_dep(self, data): '''添加成功的测试用例''' re_data = { "data": [{ "dep_id": data["dep_id"], "dep_name": data["dep_name"], "master_name": data["master_name"], "slogan": data["slogan"] }] } response = self.add_dep.add_dep(re_data) # 得到新增学院的接口返回值 # 获取添加成功后的dep_id # self.add_dep.get_depid(data) # 因为直接使用该方法相当于又执行了一次添加学院接口 if "status_code" in response.keys(): # 判断status_code是否在返回值的键中
class GetData: def __init__(self): self.excel = OperationExcel() self.json = OperationJson() self.mysql = OperationMySQL() self.data = data.data_config def get_case_lines(self): return self.excel.get_lines() # 获取是否执行 def get_is_run(self, row): flag = None col = self.data.get_run() run = self.excel.get_cell_value(row, col) if run == 'yes': flag = True else: flag = False return flag # 获取请求方式 def get_method(self, row): col = self.data.get_method() return self.excel.get_cell_value(row, col) # 获取url def get_url(self, row): col = self.data.get_url() return self.excel.get_cell_value(row, col) # 是否需要headers def is_headers(self, row): col = self.data.get_headers() headers = self.excel.get_cell_value(row, col) if headers == 'no': return None else: return headers # 请求参数 def get_request_data(self, row): col = self.data.get_request_data() request_data = self.excel.get_cell_value(row, col) if request_data == '': return None else: return request_data # 根据关键字拿到data def get_data_for_json(self, row): return self.json.get_data(self.get_request_data(row)) # 获取预期结果 def get_expect_data(self, row): col = self.data.get_expect() expect = self.excel.get_cell_value(row, col) if expect == '': return None else: return expect # 在MySQL中获取结果 def get_expect_data_from_mysql(self, row): sql = self.get_expect_data(row) res = self.mysql.search_one(sql) return res # 在Excel中写入结果 def write_result(self, row, value): col = self.data.get_result() self.excel.write_value(row, col, value)
def __init__(self): self.excel = OperationExcel() self.json = OperationJson() self.mysql = OperationMySQL() self.data = data.data_config
class GetData: def __init__(self): self.opera_excel = OperationExcel() # 去获取Excel的行数,就是我们的case个数 def get_case_lines(self): return self.opera_excel.get_lines() # 获取是否执行 def get_is_run(self, row): flag = None col = int(dataconfig.get_run()) run_modul = self.opera_excel.get_cell_value(row, col) if run_modul == 'yes': flag = True else: flag = False return flag # 判断是否携带header def get_is_header(self, row): col = int(dataconfig.get_header()) header = json.loads(self.opera_excel.get_cell_value(row, col)) if header != '': header = dataconfig.get_header_value() else: header = None return header # 获取请求方式 def get_request_method(self, row): col = int(dataconfig.get_request_way()) request_method = self.opera_excel.get_cell_value(row, col) return request_method # 获取url def get_request_url(self, row): col = int(dataconfig.get_url()) request_url = self.opera_excel.get_cell_value(row, col) return request_url # 获取请求的数据 def get_request_data(self, row): col = int(dataconfig.get_data()) request_data = json.loads(self.opera_excel.get_cell_value(row, col)) return request_data # 获取依赖的case_id def get_depend_case(self, row): col = int(dataconfig.get_case_depend()) case_id = self.opera_excel.get_cell_value(row, col) return case_id # 获取依赖的字段 def get_depend_key(self, row): col = int(dataconfig.get_data_depend()) depend_key = self.opera_excel.get_cell_value(row, col) return depend_key # 获取依赖数据的传参的key def get_field_depend(self, row): col = int(dataconfig.get_field_depend()) depend_field = self.opera_excel.get_cell_value(row, col) return depend_field # 获取预期结果数据 def get_expect_data(self, row): col = int(dataconfig.get_expect()) except_data = self.opera_excel.get_cell_value(row, col) return except_data # 写入实际结果 def write_result(self, row, value): col = int(dataconfig.get_result()) self.opera_excel.write_value(row, col, value)
def __init__(self, case_id): self.case_id = case_id self.run_method = RunMethod() self.opera_excel = OperationExcel() self.data = GetData()
def get_case_line_data(self): rows_data = OperationExcel().get_rows_data(self.case_id) return rows_data