def __init__( self, data = None, edges = None, noise_flag = True, white_list = [], eps1_val = c.EPSILON_1, cramer = 0.2): """ __init__ Input: 1. DataUtils.Data Procedure 1. Convert the given data frame to dataframe in R 2. Convert the given Domain(in python dict) to ListVector 3. Instantial the attributes dependency. """ self.LOG = Base.get_logger("DepGraph") self.noise_flag = noise_flag self.eps1_val = eps1_val self.cramer = cramer self.data = data if data is None: self.edges = edges else: self.edges = self._run() self.white_list = white_list
def __init__(self, sensitive_data): """ Import the original data and initialize the utility measurement object Parameters ---------- sensitive_data: string The path to the original data. """ self.LOG = Base.get_logger("UserQuery") sensitive = DataUtils(file_path = sensitive_data) self.sensitive_df = sensitive.get_pandas_df()
def test_1037(): """出租合同承租周期小于一年""" # describe: 出租合同承租周期小于一年,生成一条业绩单 # data:1、房源已定价2、设计工程已交房;3、有装修成本;4、房源类型为合租;5、出租合同承租周期不大于1年; # result:生成一条业绩单,审核状态为待审核,核发月份为空 fileName = 'apartmentAchievement_1037' randomApartment = "SELECT a.apartment_code,a.apartment_id,hc.contract_num,hc.contract_id FROM apartment a INNER JOIN house_contract hc " \ "ON hc.contract_id = a.house_contract_id AND hc.is_active = 'Y' AND hc.deleted = 0 AND hc.audit_status='APPROVED' AND hc.contract_status = 'EFFECTIVE' " \ "INNER JOIN fitment_house fh on fh.house_id=hc.house_id AND fh.fitment_status='HANDOVER' WHERE a.deleted = 0 " \ "AND a.rent_price > 0 AND a.city_code = 330100 AND hc.entrust_type = 'SHARE' AND a.rent_status='WAITING_RENT'" \ "AND hc.real_due_date>date_add(date(sysdate()), interval 1 YEAR) ORDER BY RAND() LIMIT 1" if sqlbase.get_count(randomApartment) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % randomApartment) return info = sqlbase.serach(randomApartment) apartmentCode = info[0] apartmentId = info[1] consoleLog(u'%s:使用房源 %s 签约出租合同' % (fileName,apartmentCode)) dateInfo = sqlbase.serach( "SELECT entrust_start_date,entrust_end_date,date(sysdate()),date_add(date(sysdate()), interval 1 DAY),date_add(date(sysdate()), interval 6 month) " "from house_contract where contract_num = '%s'" % info[2]) # 获取时间元素 with Base() as base: # 创建出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[2], rent_start_date=dateInfo[3], rent_end_date=dateInfo[4], deposit=2000, payment_cycle='TOW_MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 出租合同检查 contractAdd = "select * from apartment a,apartment_contract ac ,apartment_contract_relation acr where a.apartment_id=acr.apartment_id and acr.contract_id=ac.contract_id " \ "and a.apartment_code='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='SHARE' " \ "AND ac.is_active='Y' " % (apartmentCode, apartmentContractNum) base.diffAssert(lambda test: asserts(sqlbase.waitData(contractAdd,1)).is_true(),1037, u'%s:出租合同 %s 新增失败,执行SQL:%s' % (fileName, apartmentContractNum, contractAdd)) # 业绩检查 achievementsqla = "select aca.is_active,aca.audit_status,aca.accounting_time from apartment_contract_achievement aca inner join apartment a on a.apartment_code=aca.house_code " \ "where contract_num='%s' and a.apartment_code='%s'and aca.deleted=0 " % (apartmentContractNum, apartmentCode) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert(lambda test:asserts(achievementinfo[0]).is_equal_to('N'), 1037, u'%s:合同 %s 对应业绩生效状态异常,期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert(lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1037, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) base.diffAssert(lambda test: asserts(achievementinfo[2]).is_equal_to('None'), 1037, u'%s:合同 %s 对应业绩审核发月份异常, 期望值 None 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[2])) else: consoleLog( u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum),'e') consoleLog(u'执行SQL:%s' % achievementsqla)
class TestHouTai(): @pytest.fixture(scope="function") def open_houtai(self,driver): '''每次用例回到后台一级界面首页''' self.hou = Base(driver) driver.get(url_hou) @pytest.mark.aboutzentao @pytest.mark.parametrize("loc_about_x,text",test_about_data) def test_aboutzentao(self,driver,open_houtai,loc_about_x,text): '''关于禅道-升级专业版本''' t1 = self.hou.get_text(loc_about_x) assert t1 == text @pytest.mark.helpwe @pytest.mark.parametrize("loc_helpwe_x,text",test_helpwe_data) def test_helpwe(self,driver,open_houtai,loc_helpwe_x,text): '''帮助我们-用例''' t1 = self.hou.get_text(loc_helpwe_x) assert t1 == text
class ZenTaoBug(): #定位登录 loc1 = ("id", "account") loc2 = ("name", "password") loc3 = ("id", "submit") #添加bug loc_test = ("link text" "测试") loc_bug = ("link text", "Bug") loc_addbug = ("xpath", ".//*[@id='createActionMenu']/a") loc_truck = ("xpath", ".// *[ @ id = 'openedBuild_chosen'] / ul") loc_truck_add = ("xpath", ".// *[ @ id = 'openedBuild_chosen'] / div / ul / li") loc_input_title = ("id", "title") loc_avse = ("css select", "#submit") #需要先切换frame loc_input_body = ("class name", ".article-content") def __init__(self): self.driver = driver self.zentao = Base(self.driver) def login(self, user="******", psw="123456"): self.zentao.sendkeys(self.loca1, user) self.zentao.sendkeys(self.loca2, psw) self.zentao.click(self.loca3)
def __call__(self, conns): self.base = Base() self.financial_data = conns['financial_data'] '''存款利率''' deposit_rate = ts.get_deposit_rate() self.base.batchwri(deposit_rate, 'deposit_rate', self.financial_data) '''贷款利率''' loan_rate = ts.get_loan_rate() self.base.batchwri(loan_rate, 'loan_rate', self.financial_data) '''存款准备金率''' rrr = ts.get_rrr() self.base.batchwri(rrr, 'RatioOfDeposit', self.financial_data) '''货币供应量''' money_supply = ts.get_money_supply() self.base.batchwri(money_supply, 'money_supply', self.financial_data) '''货币供应量(年底余额)''' money_supply_bal = ts.get_money_supply_bal() self.base.batchwri(money_supply_bal, 'money_supply_bal', self.financial_data) '''国内生产总值(年度)''' gdp_year = ts.get_gdp_year() self.base.batchwri(gdp_year, 'gdp_year', self.financial_data) '''国内生产总值(季度)''' gdp_quarter = ts.get_gdp_quarter() self.base.batchwri(gdp_quarter, 'gdp_quarter', self.financial_data) '''三大需求对GDP贡献''' gdp_for = ts.get_gdp_for() self.base.batchwri(gdp_for, 'gdp_for', self.financial_data) '''三大产业对GDP拉动''' gdp_pull = ts.get_gdp_pull() self.base.batchwri(gdp_pull, 'gdp_pull', self.financial_data) '''三大产业贡献率''' gdp_contrib = ts.get_gdp_contrib() self.base.batchwri(gdp_contrib, 'gdp_contrib', self.financial_data) '''居民消费价格指数''' cpi = ts.get_cpi() self.base.batchwri(cpi, 'cpi', self.financial_data) '''工业品出场价格指数''' ppi = ts.get_ppi() self.base.batchwri(ppi, 'ppi', self.financial_data)
def setUp(self): self.selected_attrs = dict({ 'Age': 'C', 'workclass': 'D', 'fnlwgt': 'C', 'education': 'D', 'education_num': 'D', 'marital_status': 'D', 'occupation': 'D', 'relationship': 'D', 'race': 'D', 'sex': 'D', 'capital_gain': 'C', 'capital_loss': 'C', 'hours_per_week': 'C', 'native_country': 'D', 'salary_class': 'D' }) self.data = DataUtils(file_path=TESTING_FILE, selected_attrs=self.selected_attrs) self.data.data_coarsilize() self.base = Base()
def get(self, address, params=''): # 访问路径 path = self.url + address # 请求参数 loginData = { "token": self.token, "userId": self.userId, "timestamp": self.timestamp } loginData.update(params) # 参数按键盘排序,排序后MD5加密 sign = Base().md5(Base().sort(loginData)) # 加上sign loginData["sign"] = sign # 请求接口 self.r = requests.get(url=path, params=loginData, headers=self.Cookie) if self.r.json()["resultCode"] == 200: print("【请求成功】:你很棒 \n【接口地址】:%s \n【请求结果】:%s" % (address, self.r.json())) else: print("【请求异常】:请检查 \n【接口地址】:%s \n【报错信息】:%s" % (address, self.r.text)) return False
def __init__(self): Base.__init__(self) # CORS headers added here. self.ui_headers = [ ("Access-Control-Allow-Origin", "*"), ("Access-Control-Allow-Headers", "Content-Type"), ("Access-Control-Allow-Methods", "GET, POST, OPTIONS"), ("Content-Type", "text/plain"), ] self.json_response = """ { "messages": [ ${MESSAGES_ARRAY} ] }\ """ self.rsp_msg = """ { "type": "${TYPE}", "${FORMAT}": "${OUTPUT_MESSAGE}" }\ """ self.json_response_template = Template(self.json_response) self.rsp_msg_template = Template(self.rsp_msg) # Pattern's of the three types of queries which the end user can enter # on the lessenger UI. self.location_pattern_strings = [ r"\s*what\'s\s+the\s+weather\s+in\s+([a-zA-Z0-9 ]*.*)\s*", r"\s*weather\s+in\s+([a-zA-Z0-9 ]*.*)\s*", r"\s*([a-zA-Z0-9 ]*.*)weather\s*" ]
def test_modify_address(driver_init): """测试修改收货地址的正确性""" add = Add_address(driver_init) # 点击收货管理 add.click_address() # 点击选择修改的收货地址 add.click_modify_address() # 输入修改的收货人姓名 newconsignee = "李四" add.input_newconsignee(newconsignee) # 输入修改的电话号码 newmobile = "13312341234" add.input_newmobile(newmobile) # 输入修改的邮箱 newemail = "*****@*****.**" add.input_newemail(newemail) # 输入修改的邮政编码 newpostal = "614000" add.input_newpostal(newpostal) # 点击所在地区 add.click_newregion() # 点击修改的国家 add.click_newcountry() # 点击修改的省 base = Base(driver_init) base.swipe_up() add.click_newprovince() # 点击修改的市 add.click_newcity() # 点击修改的区 add.click_newarea() # 输入修改的详细地址 newdetailed_address = "上城" add.input_newdetailed_address(newdetailed_address) # 点击添加保存按钮 add.click_preservation() assert True
def test_1038(): """承租周期大于一年且小于18个月生成一条业绩""" # describe: 出租合同承租周期小于一年,生成一条业绩单 # data:1、房源类型为服务整租;2、出租合同承租周期为16个月;3、承租到期日等于委托延长期到期日; # result:生成一条业绩单,审核状态为待审核,核发月份为空 fileName = 'apartmentAchievement_1038' with Base() as base: # 创建房源,委托合同 dateSql = "select date(sysdate()),date_add(date(sysdate()),INTERVAL 1 day),date_add(date(sysdate()),interval 13 month),date_add(date(sysdate()),interval 16 month)," \ "date_add(date(sysdate()),INTERVAL 1 month) from dual" dateInfo = sqlbase.serach(dateSql) apartmentId = addHouseContractAndFitment(apartment_type='MANAGE', entrust_type='ENTIRE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888) # 创建租客,出租合同 customer = createCustomer() apartmentContractInfo = createApartmentContract(apartement_id=apartmentId, customerInfo=customer, rent_price=5500, sign_date=dateInfo[0], rent_start_date=dateInfo[1], rent_end_date=dateInfo[3], deposit=2000, payment_cycle='MONTH') apartmentContractNum = apartmentContractInfo['contractNum'] # 出租合同检查 contractAdd = "select * from apartment a,apartment_contract ac ,apartment_contract_relation acr where a.apartment_id=acr.apartment_id and acr.contract_id=ac.contract_id " \ "and a.apartment_id='%s'AND ac.contract_num = '%s'AND ac.audit_status='AUDIT' and ac.contract_type = 'NEWSIGN' AND ac.entrust_type='ENTIRE' " \ "AND ac.is_active='Y' " % (apartmentId, apartmentContractNum) base.diffAssert(lambda test: asserts(sqlbase.waitData(contractAdd, 1)).is_true(), 1038, u'%s:出租合同 %s 新增失败,执行SQL:%s' % (fileName, apartmentContractNum, contractAdd)) # 业绩检查 achievementsqla = "select FLOOR(ABS(DATEDIFF(aca.start_time,aca.end_time)/30)),aca.audit_status,aca.is_active from apartment_contract_achievement aca inner join apartment a " \ "on a.apartment_code=aca.house_code and a.apartment_id='%s' where aca.contract_num='%s' and aca.deleted=0" % (apartmentId, apartmentContractNum) if sqlbase.waitData(achievementsqla, 1): achievementinfo = sqlbase.serach(achievementsqla) base.diffAssert(lambda test: asserts(achievementinfo[0]).is_equal_to(16), 1038, u'%s:合同 %s 对应业绩周期异常,期望值 16 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[0])) base.diffAssert(lambda test: asserts(achievementinfo[1]).is_equal_to('AUDIT'), 1038, u'%s:合同 %s 对应业绩审核状态异常, 期望值 AUDIT 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[1])) base.diffAssert(lambda test: asserts(achievementinfo[2]).is_equal_to('N'), 1038, u'%s:合同 %s 对应业绩生效状态异常, 期望值 N 实际值 %s' % (fileName, apartmentContractNum, achievementinfo[2])) else: consoleLog(u'%s:合同 %s 对应业绩生成异常' % (fileName, apartmentContractNum),'e') consoleLog(u'执行SQL:%s'% achievementsqla)
def test_1071(): """检测出租合同续签需要合同应收全部已审""" sql = "SELECT act.contract_num from apartment_contract act INNER JOIN apartment_contract_receivable acr on act.contract_id = acr.contract_id where act.deleted = 0 " \ "and acr.deleted = 0 and act.entrust_type = 'SHARE' and act.city_code = '330100' and acr.end_status = 'NOTGET' order by rand() limit 1" contractNum = sqlbase.serach(sql)[0] with Base() as base: base.open(page.apartmentContractPage,apartmentContractPage.searchContractMould['contract_num_loc']) base.input_text(apartmentContractPage.searchContractMould['contract_num_loc'],contractNum) base.click(apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of(apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractPage.searchContractMould['resign_loc']) try: base.wait_element(apartmentContractPage.alertInfo) except TimeoutException: base.diffAssert(lambda t:asserts('a').ends_with('b'), 1071, u'出租合同未全部收款审核的情况下,续签没有弹出提示')
def __init__(self, driver): self.driver = driver self.base = Base(driver) #定位用户名元素的参数 self.loc_user = ("id", "txtUserName") #定位密码元素的参数 self.loc_pwd = ("id", "txtPassWord") #定位登录按钮元素的参数 self.button = ("id", "btnSubmit") #首页导航菜单中的“涉访管理”按钮元素 self.loc_sfgl = ("css selector", ".nav-feifang-n>a>cite>p") #涉访审批管理菜单元素 self.loc_spgl = ("link text", "涉访审批管理") #“列管待审批”菜单元素 self.loc_lgdsp = ("link text", "列管待审批") #定位待审批的表格 未用到 self.loc_table = ("css selector", "#fsDatagrid") #定位表格内容td 未用到 self.loc_table_td = ("tag name", "td") #定位审批按钮 # 只能用JS来定位到“审批按钮” self.appr_butn = '''document.getElementsByTagName('iframe')[2].contentWindow.document.body. getElementsByClassName('layui-table-body')[1].getElementsByClassName('layui-btn')[0].click()''' #-----------------审批弹窗页-------------------- #审批结果:选择同意或不同意,index为1是同意,为0是不同意 self.appr_result = '''document.getElementsByTagName('iframe')[3].contentWindow.document.body. getElementsByTagName('fieldset')[1].getElementsByClassName('layui-anim')[1].click()''' #审批意见框 self.appr_idea = '''document.getElementsByTagName('iframe')[3].contentWindow.document. body.getElementsByTagName('fieldset')[1].getElementsByClassName('layui-textarea')[0].value=("可以")''' #提交审批按钮 self.appr_submit = '''document.getElementsByTagName('iframe')[3].contentWindow.document. getElementById("spButton").click()''' #审批“操作成功”提示 self.submit_tips = ("css selector", ".layui-layer-content.layui-layer-padding")
def __init__( self, file_path = None, selected_attrs = None, pandas_df = None, valbin_maps = None, names=None, specified_c_domain = None, chunk_size = -1, date_format = None ): """ Loading data to warpped python object Parameters ---------- file_path: string The path of original data selected_attrs: dict { "A":"C", "B":"D", ... } pandas_df: Pandas dataframe Initialize with a pandas dataframe(TODO: deprecated) valbin_maps: dict A mapping of original values with coarse value names: list, experiment A list to specifiy the attributes' names when the input file has no header specified_c_domain: dict, experiment A mapping of continuous type attributes with the specified edges in coarse """ self.LOG = Base.get_logger("DataUtils") self.valbin_maps = dict() if valbin_maps is None else valbin_maps self.chunk_size = chunk_size if chunk_size > 0: self.dataframe = self._loading_chunk(file_path, pandas_df, names) else: self.dataframe = self._loading(file_path, pandas_df, names) if selected_attrs is not None: self.selected_attrs = selected_attrs # the 'selected_attrs' is ordered self.dataframe = self.dataframe[selected_attrs.keys()] self.preview_count = 5 self.specified_c_domain = specified_c_domain self.date_format = date_format
def test_a(self): """ 用例说明:1111 """ self.driver.get("https://www.baidu.com") baidu = Base(self.driver) loc1 = ("id", "kw") loc2 = ("id", "su") baidu.sendKeys(loc1, "python") time.sleep(2) baidu.click(loc2) time.sleep(2)
def test_guge(): driver = webdriver.Chrome() web = Base(driver) # 实例化 driver.get("https://www.baidu.com") loc_1 = ("id", "kw") web.send(loc_1, "hello") loc_2 = ("id", "su") web.click(loc_2) # Python is likely shutting down '''driver.close()'''
def __init__(self, file_path=None, selected_attrs=None, pandas_df=None, valbin_maps=None, names=None, specified_c_domain=None, chunk_size=-1, date_format=None): """ Loading data to warpped python object Parameters ---------- file_path: string The path of original data selected_attrs: dict { "A":"C", "B":"D", ... } pandas_df: Pandas dataframe Initialize with a pandas dataframe(TODO: deprecated) valbin_maps: dict A mapping of original values with coarse value names: list, experiment A list to specifiy the attributes' names when the input file has no header specified_c_domain: dict, experiment A mapping of continuous type attributes with the specified edges in coarse """ self.LOG = Base.get_logger("DataUtils") self.valbin_maps = dict() if valbin_maps is None else valbin_maps self.chunk_size = chunk_size if chunk_size > 0: self.dataframe = self._loading_chunk(file_path, pandas_df, names) else: self.dataframe = self._loading(file_path, pandas_df, names) if selected_attrs is not None: self.selected_attrs = selected_attrs # the 'selected_attrs' is ordered self.dataframe = self.dataframe[selected_attrs.keys()] self.preview_count = 5 self.specified_c_domain = specified_c_domain self.date_format = date_format
class GeGuHangQing(object): def __init__(self): super(GeGuHangQing,self).__init__() self.close_res = [] def __call__(self, conns, retry_num=3): ''' 抓取股票每日行情数据 :param conns: 数据库连接 :param retry_num: 重新获取数据的次数 :return: 数据存储在数据库 ''' global hangqing self.base = Base() self.finacial_data = conns['financial_data'] # self.finacial_data.dopost('TRUNCATE TABLE stock_hangqing_date') # self.finacial_data.dopost('TRUNCATE TABLE stock_code_name') #在股市收盘后,获取股票当日行情 #出现"urllib.error.HTTPError: HTTP Error 456"的问题 for i in range(retry_num+1): try: hangqing = ts.get_today_all() break except Exception as e: logger.warning('Retry get today stock data , the [%d] times, err %s' % (i, e.message)) if i == retry_num: logger.warning(traceback.format_exc()) raise e time.sleep(300) today = self.base.gettoday() hangqing['date'] = today.replace('/','-') #股市收盘后,trade现价就是股票的收盘价。 hangqing.rename(columns={'trade': 'close'}, inplace=True) #去重 hangqing_qc = hangqing.drop_duplicates().sort_values(by='code').reset_index(drop=True) # print(hangqing_qc) self.base.batchwri(hangqing_qc, 'stock_hangqing_date',self.finacial_data) self.base.batchwri(hangqing_qc[['code','name']], 'stock_code_name', self.finacial_data) #股票代码-名称对照表去重 duizhao = self.finacial_data.getdata('stock_code_name') print(duizhao.size) duizhao_qc = duizhao.drop_duplicates().sort_values(by='code').reset_index(drop=True) # print(df) self.finacial_data.dopost('TRUNCATE TABLE stock_code_name') self.base.batchwri(duizhao_qc, 'stock_code_name', self.finacial_data)
def test_1012(): """出租合同已有实收""" # describe:出租合同有实收不能删除 # data:出租合同已有实收 # result:删除失败 fileName = 'apartmentContract_1012' contractSql = "select ac.contract_num from apartment_contract ac inner join apartment_contract_receipts acr on ac.contract_id=acr.contract_id " \ "where ac.deleted=0 and ac.is_active='Y' and ac.city_code=330100 and ac.entrust_type='SHARE' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机实收出租合同 %s 做合同删除' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click( apartmentContractPage.searchContractMould['delete_loc']) # 删除 base.click(apartmentContractPage. addApartmentContractMould['delete_button_confirm']) base.wait_element( apartmentContractPage.searchContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'请财务先重置并删除收款信息' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1012, u'%s:出租合同 %s 删除异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
class LoginPage(): def __init__(self, driver): #初始化 self.driver = driver self.b = Base(self.driver) def login(self, uesr="admin", psw="123456"): self.driver.get("http://127.0.0.1/zentao/user-login.html") time.sleep(3) self.b.send("xpath", ".//*[@id='account']", "admin") self.b.send("css selector", "[name='password']", "123456") self.b.click("css selector", "#submit") def get_login_reslut(self): #断言 #time.sleep(3) #try: #t = self.b.get_text("css selector", "#userMenu>a") #return t #except: #return "" self.b.get_text("css selector", "#userMenu>a", timeout=5)
def test_1031(): """有有效出租合同的委托合同删除""" # describe:有有效出租合同的委托合同不能删除 # data:1、委托合同状态为有效;2、委托合同下有至少一个有效状态的出租合同; # result:删除失败,提示有关联的出租合同不能删除 fileName = 'houseContract_1031' contractSql = "select hc.contract_num ,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where EXISTS (select * from apartment_contract ac " \ "where hc.house_id=ac.house_id and ac.is_active='Y' and ac.deleted=0 )and hc.is_active='Y' and hc.deleted=0 and hc.city_code=330100 order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] consoleLog(u'%s:取委托合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click( houseContractPage.addHouseContractMould['delete_button_confirm']) base.wait_element( houseContractPage.addHouseContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'有关联的出租合同不能删除.' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1031, u'%s:合同 %s 删除异常,期望信息"%s"实际信息"%s"' % (fileName, contractNum, messagehope, message))
def test_1036(): """到期委托合同正常删除""" # describe:到期委托合同可以正常删除成功 # data:1、委托合同状态为到期;2.名下无出租合同 # result:委托合同删除成功; fileName = 'houseContract_1036' dateSql = "select date_sub(date(sysdate()),INTERVAL 24 month),date_add(date(sysdate()),INTERVAL 1 day),date_sub(date(sysdate()),interval 5 month)," \ "date_sub(date(sysdate()),interval 2 month),date_sub(date(sysdate()),INTERVAL 23 month) from dual" # 时间元素 dateInfo = sqlbase.serach(dateSql) houseSql = sqlbase.serach( "select house_id,residential_id,building_id,house_code from house where deleted=0 and city_code=330100 order by rand() limit 1") houseInfo = {'houseID': houseSql[0], 'residentialID': houseSql[1], 'buildingID': houseSql[2],'houseCode': houseSql[3]} # 开发房源信息 with Base() as base: #创建到期委托合同 apartmentId = addHouseContractAndFitment(apartment_type='BRAND', entrust_type='ENTIRE', sign_date=dateInfo[0], owner_sign_date=dateInfo[0], entrust_start_date=dateInfo[0], entrust_end_date=dateInfo[2], delay_date=dateInfo[3], free_start_date=dateInfo[0], free_end_date=dateInfo[4], first_pay_date=dateInfo[0], second_pay_date=dateInfo[4], rent=1234, parking=123, year_service_fee=321, payment_cycle='MONTH', fitment_start_date=dateInfo[0], fitment_end_date=dateInfo[4], rooms=3, fitmentCost=88888, houseInfo=houseInfo) contractSql = "select hc.contract_num,a.apartment_code from house_contract hc INNER JOIN apartment a on a.house_contract_id=hc.contract_id and a.apartment_id='%s'" % apartmentId contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] contractStatusSql = "select * from house_contract where contract_num='%s' and contract_status='EXPIRE'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.waitData(contractStatusSql,1)).is_true(),1036, u'%s:已到期合同 %s 生成异常,执行SQL:%s"' % (fileName, contractNum, contractStatusSql)) base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text(houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text(houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click(houseContractPage.addHouseContractMould['delete_button_confirm']) base.check_submit() # 合同状态检查 contractSqlb = "select * from house_contract where deleted=1 and contract_num='%s'" % contractNum base.diffAssert(lambda test: asserts(sqlbase.get_count(contractSqlb)).is_equal_to(1),1036, u'%s:已到期委托合同 %s 删除异常,执行SQL:%s"' % (fileName, contractNum, contractSqlb))
def err_data_clear(exe_data, trans_no=True): """特殊清理方法""" if trans_no is True: trans_no = Base.get_trans_no(exe_data) else: trans_no = trans_no table_name = [ Constants.TableName.HIS_ACCNT_PREPAY, Constants.TableName.HIS_ACCNT_ONWAY, Constants.TableName.HIS_ACCNT_PROFILE, Constants.TableName.HIS_ACCNT_MCH_SUB ] oder_id = [ 'test1', 'test2', 'test3', 'test4', 'test5', 'test6', 'test10' ] for table_name in table_name: SqlSave.delete_amt_info(table_name=table_name, trans_no=trans_no) for id in oder_id: SqlSave.delete_mch_accnt_balance_record(oder_id=id)
def test_1035(): """已终止的合同不能删除""" # describe:已终止的合同不能删除 # data:1、合同状态为公司违约或者业主违约或者正退;2.名下无出租合同 # result:删除失败,委托合同为终止状态不能删除 fileName = 'houseContract_1035' contractSql = "select hc.contract_num ,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where hc.contract_status='OWNER_DEFAULT' " \ "and hc.deleted=0 and hc.city_code=330100 and not EXISTS (select * from apartment_contract ac where hc.house_id=ac.house_id)order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] consoleLog(u'%s:取已终止委托合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click( houseContractPage.addHouseContractMould['delete_button_confirm']) base.wait_element( houseContractPage.addHouseContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'委托合同为终止状态不能删除.' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1035, u'%s:已终止委托合同 %s 删除异常,期望信息"%s"实际信息"%s"' % (fileName, contractNum, messagehope, message))
def test_1022(): """合同终止结算已复审删除""" # describe:合同终止结算已复审不能删除 # data:合同终止结算已复审 # result:删除失败 fileName = 'apartmentContract_1022' contractSql = "select ac.contract_num from apartment_contract_end ace inner join apartment_contract ac on ace.contract_id=ac.contract_id " \ "and ac.city_code=330100 where ace.deleted=0 and ace.audit_status='REVIEW' order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机终止结算合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.contractEndPage, apartmentContractEndPage.searchMould['tr_contract_end']) base.input_text( apartmentContractEndPage.searchMould['contract_num_loc'], contractNum) base.click(apartmentContractEndPage.searchMould['search_button_loc']) base.staleness_of( apartmentContractEndPage.searchMould['tr_contract_end']) base.click( apartmentContractEndPage.addContractEndMould['delete_button']) base.click(apartmentContractEndPage. addContractEndMould['delete_button_confirm']) base.wait_element( apartmentContractPage.searchContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'终止结算已审核,不可删除' base.diffAssert( lambda test: asserts(message).contains(messagehope), 1022, u'%s:出租合同 %s 终止结算删除异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1017(): """已终止合同发起结算""" # describe:已终止合同不能重复发起结算 # data:合同已终止 # result:终止结算提交失败 fileName = 'apartmentContract_1017' contractSql = "select contract_num from apartment_contract where contract_status in ('COLLECTHOUSE','CORPORATE_DEFAULT','OWNER_DEFAULT','RETREATING','FORRENT') " \ "and city_code=330100 and deleted=0 and entrust_type='SHARE' order by rand() limit 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机出租合同 %s 做终止' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractEndPage.addContractEndMould['tr_contract']) base.input_text( apartmentContractEndPage.addContractEndMould['contract_num_loc'], contractNum) # 输入合同编 base.click(apartmentContractEndPage. addContractEndMould['search_button_loc']) # 搜索 base.staleness_of(apartmentContractEndPage. addContractEndMould['tr_contract']) # 等待列表刷新 base.context_click(apartmentContractEndPage. addContractEndMould['tr_contract']) # 右击第一条数据 base.click( apartmentContractEndPage.addContractEndMould['end_button_loc'], index=1) # 终止结算 time.sleep(1) message = base.script( "var a = $('.bootstrap-growl.alert.alert-info.alert-dismissible').text();return a", True) # 获取提示信息 messagehope = u'该合同已终止' base.diffAssert( lambda test: asserts(message).contains(messagehope), 1017, u'%s:出租合同 %s 终止结算异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1010(): """出租合同已终止删除""" # describe:出租合同已终止不能删除 # data:出租合同已终止结算 # result:删除失败 fileName = 'apartmentContract_1010' contractSql = "select contract_num from apartment_contract where contract_status in ('COLLECTHOUSE','CORPORATE_DEFAULT','OWNER_DEFAULT','RETREATING','FORRENT') " \ "and city_code=330100 and deleted=0 and entrust_type='SHARE' ORDER BY RAND() LIMIT 1" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return info = sqlbase.serach(contractSql) contractNum = info[0] consoleLog(u'%s:取随机出租终止合同 %s 做合同删除' % (fileName, contractNum)) with Base() as base: base.open(page.apartmentContractPage, apartmentContractPage.searchContractMould['tr_contract']) base.input_text( apartmentContractPage.searchContractMould['contract_num_loc'], contractNum) # 输入合同编号 base.click( apartmentContractPage.searchContractMould['search_button_loc']) base.staleness_of( apartmentContractPage.searchContractMould['tr_contract']) base.context_click( apartmentContractPage.searchContractMould['tr_contract']) base.click(apartmentContractPage.searchContractMould['delete_loc']) base.wait_element( apartmentContractPage.searchContractMould['message_loc']) # 等待提示出现 time.sleep(1) message = base.script( "var a = $('.panel.window.messager-window>div:nth-child(2)>div:nth-child(2)').text();return a", True) # 获取提示信息 messagehope = u'出租合同已终止不能删除.' base.diffAssert( lambda test: asserts(message).is_equal_to(messagehope), 1010, u'%s:出租合同 %s 删除异常,期望值 %s 实际值 %s' % (fileName, contractNum, messagehope, message))
def test_1034(): """有效委托合同正常删除""" # describe:有效合同正常删除 # data:1、委托合同状态为有效;2、委托合同下没有有效状态的出租合同; # result:委托合同删除成功; fileName = 'houseContract_1034' # contractSql = "select hc.contract_num,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where not EXISTS (select * from apartment_contract ac " \ # "where hc.house_id=ac.house_id) and hc.is_active='Y' and hc.deleted=0 and hc.city_code=330100 order by rand() limit 1" contractSql = "select hc.contract_num,h.house_code from house_contract hc inner join house h on h.house_id=hc.house_id where not EXISTS (select * from house_contract_pay hcp " \ "where hc.contract_id=hcp.contract_id and hcp.deleted=0) and not EXISTS (select * from apartment_contract ac where hc.house_id=ac.house_id)and hc.is_active='Y' " \ "and hc.deleted=0 and hc.city_code=330100" if sqlbase.get_count(contractSql) == 0: consoleLog(u'%s:SQL查无数据!' % fileName, 'w') consoleLog(u'执行SQL:%s' % contractSql) return contractInfo = sqlbase.serach(contractSql) contractNum = contractInfo[0] consoleLog(u'%s:取委托合同 %s 做删除' % (fileName, contractNum)) with Base() as base: base.open(page.entrustContractPage, houseContractPage.contractSearchMould['tr_contract']) base.input_text( houseContractPage.contractSearchMould['residential_name_loc'], contractInfo[1]) base.input_text( houseContractPage.contractSearchMould['contract_num_loc'], contractNum) base.click(houseContractPage.contractSearchMould['search_button_loc']) base.staleness_of(houseContractPage.contractSearchMould['tr_contract']) base.click(houseContractPage.addHouseContractMould['delete_button']) base.click( houseContractPage.addHouseContractMould['delete_button_confirm']) base.check_submit() # 合同状态检查 contractSqlb = "select * from house_contract where deleted=1 and contract_num='%s'" % contractNum base.diffAssert( lambda test: asserts(sqlbase.waitData(contractSqlb, 1)).is_true(), 1034, u'%s:委托合同 %s 删除异常,执行SQL:%s"' % (fileName, contractNum, contractSqlb))
def test_002(self): url = r'http://127.0.0.1:8000/login' request_data = { "data": "eee", "username": "******", "mobile": "189978798" } response_data = { "code": "200", "data": "eee", "username": "******", "mobile": "189978798" } self.r = Base() # res = self.r.run_main(url, "GET", data) res = mock_demo1(self.r.run_main, request_data, url, 'GET', response_data) # run= json.loads(res)#将json格式转换为字典 print(res) self.assertEqual(res['data'], 'eee', "测试失败")
def machaccnt_pay_channel_rate_common(exc_data): """ 含有手续费的handle处理 exc_data 是给构造预期结果用 copy是给请求用 回填 计算手续费后的金额 """ copy_exc_data = copy.deepcopy(exc_data) comparison_muc_sub_list = [] for key, value in Constants.SubMerchant.MUCSUB.items(): comparison_muc_sub_list.append(ConfigManager.get_service(value)) data = copy_exc_data['data'] if not isinstance(data, dict): data = json.loads(copy_exc_data['data']) trans_amt = data.get('biz_content').get('trans_amt') for i in data.get('biz_content').get('split_accnt_detail'): if i.get('mch_accnt_no') in comparison_muc_sub_list: new_amount = Base.count_charge(trans_amt, i.get('amount')) i['amount'] = new_amount copy_exc_data['data'] = HandleKeepingAccounts.public_handle( data, copy_exc_data) return copy_exc_data
class Login(Base): def __init__(self, driver): self.base = Base(driver) @allure.story('登录操作') def login(self): # d = u2.connect('emulator-5554') # #d.app_install( # #'https://imtt.dd.qq.com/16891/7E569C80A3714D58E77F6173EB8F6329.apk?fsname=com.netease.cloudmusic_5.7.2_130.apk&csr=1bbd') # d(resourceId='com.netease.cloudmusic:id/q6').wait(timeout=5) # d(resourceId='com.netease.cloudmusic:id/q6').click_exists(timeout=3) # d(resourceId='com.netease.cloudmusic:id/acb').click_exists(timeout=3) # d(resourceId="com.netease.cloudmusic:id/q1").click_exists(timeout=3) # d(resourceId="com.netease.cloudmusic:id/i9").set_text("13226349780") # d(resourceId="com.netease.cloudmusic:id/i7").set_text("*********") # d(resourceId='com.netease.cloudmusic:id/q1').click_exists(timeout=3) self.base.click(setting) self.base.click(login) self.base.click(login_phone) self.base.send_keys(phone_input, phone_input_c)
class TestZenTaoLogin(): driver = webdriver.Chrome() zen = Base(driver) url = "http://127.0.0.1:81/zentao/user-login.html" def setup(self): self.driver.get(self.url) def teardown(self): '''数据清理''' try: print("情况cookies,退出登录状态") self.driver.delete_all_cookies() self.driver.refresh() except: print("元素找不到") def teardown_class(self): '''用例执行完成后退出''' print("teardown_class:用例执行完成,关闭浏览器") self.driver.quit() def test_login_1(self): '''登录成功用例:账号->admin,密码->123456''' self.zen.sendKeys(loc1, 'admin') self.zen.sendKeys(loc2, '123456') self.zen.click(loc3) result = self.zen.get_text(login_user) print('登录结果,获取用户名:%s' % result) assert result == "admin" def test_login_2(self): '''登录失败用例:账号->admin111,密码->111''' self.zen.sendKeys(loc1, 'admin111') self.zen.sendKeys(loc2, '111') self.zen.click(loc3) result = self.zen.get_text(login_user) print('登录结果,获取用户名:%s' % result) assert result == ''
class Login_Blog(): '''登录类封装''' def __init__(self,driver): '''初始化driver参数''' self.driver = driver self.driver_n = Base(self.driver) def input_user(self,username): '''输入用户名''' username_locator = ("id","LoginName") self.driver_n.send_keys(username_locator,username) # WebDriverWait(self.driver,10).until(lambda x: x.find_element("id","LoginNamexx")).clear() # WebDriverWait(self.driver, 10).until(lambda x: x.find_element("id", "LoginNamexx")).send_keys(username) def input_psw(self,psw): '''输入密码''' password_locator = ("id","Password") self.driver_n.send_keys(password_locator,psw) # self.driver.find_element_by_id("Password").clear() # self.driver.find_element_by_id("Password").send_keys(psw) def click_button(self): '''点击登录按钮''' loginbutton_locator = ("id","submitBtn") self.driver_n.click(loginbutton_locator) # self.driver.find_element_by_id("submitBtn").click() def login(self,username,psw): '''登录公共方法''' try: self.input_user(username) self.input_psw(psw) self.click_button() except Exception as msg: print(u"异常原因%s"%msg) nowTime = time.strftime("%Y%m%d.%H.%M.%S") t = self.driver.get_screenshot_as_file(os.path.join(pic_path,'%s.jpg' % nowTime)) print(u"截图结果:%s"%t)
def __init__(self, data, jtree_path, domain, cluster, histogramdds, epsilon = 0.0 ): """ Initialize the inference class. TODO: 1. refactor, the data_path, edges, nodes, domain are temporary to be here. param data: the pandas dataframe TODO: Because the DPTable algorithm construct lots of attributes when reading data, to using memory cache, one should refector the inference step of DPTable. param domain: data information with format in dictionary { "A":[1,2,3,4,5], "B":[2,3,4,5,6] } param cluster: the merged cluster structure param epsilon: the privacy budget """ self.LOG = Base.get_logger("Inference") self.data = data self.data_size = data.get_count() self.epsilon = epsilon self.rdomain = self.convert2rdomain(domain) sorted_internal = lambda ls2: [sorted(ls) for ls in ls2] self.cluster = sorted_internal(cluster) self.jtree_path = jtree_path self.histogramdds = histogramdds
def __init__(self, domain, jtreepy, _lambda=0.2): """ Using linear programming method to find a less noise variance. param: domain: the domain of the given data (note) the order of columns in domain should be same with the original jtree: the structure of junction tree _lambda: the balance number. TODO: 1. Move jt_rep to Junction Tree Module 2. Move Different Operator to a linear algebra package """ self.LOG = Base.get_logger("CliqueMerge") self.domain = domain self.node_card = [len(vals) for vals in domain.values()] self._lambda = float(_lambda) self.max_iter = 20 self.jtree = jtreepy self.nodes_num = len(self.node_card) self.cliques_num = len(jtreepy) self.cnum = range(2, len(jtreepy)+1) if len(jtreepy) >=2 else [1] self.jtree_in_node_index = [self.find_subset_index(clique) for clique in jtreepy]
def setUp(self): self.selected_attrs = dict({ 'Age':'C', 'workclass':'D', 'fnlwgt':'C', 'education':'D', 'education_num':'D', 'marital_status':'D', 'occupation':'D', 'relationship':'D', 'race':'D', 'sex':'D', 'capital_gain':'C', 'capital_loss':'C', 'hours_per_week':'C', 'native_country':'D', 'salary_class':'D' }) self.data = DataUtils(file_path = TESTING_FILE, selected_attrs = self.selected_attrs) self.data.data_coarsilize() self.base = Base()
class DataUtilitiesTests(TestCase): # TODO: The Data Coarse and Generalize step should seperate, to simulate a more real case. def setUp(self): self.selected_attrs = dict({ 'Age':'C', 'workclass':'D', 'fnlwgt':'C', 'education':'D', 'education_num':'D', 'marital_status':'D', 'occupation':'D', 'relationship':'D', 'race':'D', 'sex':'D', 'capital_gain':'C', 'capital_loss':'C', 'hours_per_week':'C', 'native_country':'D', 'salary_class':'D' }) self.data = DataUtils(file_path = TESTING_FILE, selected_attrs = self.selected_attrs) self.data.data_coarsilize() self.base = Base() def test_data_preview(self): data = DataUtils(file_path = TESTING_FILE) preview = data.data_preview() self.assertEqual(len(preview.values[0]) > 0, True) def test_read_data_by_three_selected_column(self): """ Test the read data by user specified columns """ self.assertEqual(len(self.data.get_nodes_name()) == len(self.selected_attrs), True) def test_data_domain_keep_original_order(self): """ Test the order in domain object is in same order with original raw data. """ df = self.data.get_pandas_df() domain = self.data.get_domain() cols = domain.keys() self.assertEqual(cols == list(df.columns.values), True) def test_data_coarsilization(self): print self.data.get_pandas_df()[:5] def test_data_generalization(self): self.data.data_generalize() print self.data.get_pandas_df()[:5] def test_is_skip_pre_processing_with_create(self): create_flag = True request = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } instance = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } skip_pre_process = self.base.is_pre_process_skip(request, request, create_flag) self.assertEqual(skip_pre_process == False, True) def test_is_skip_pre_processing_with_data_path_change(self): create_flag = False request = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } instance = { 'data_path':'/path/to/dummy/file22222222.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } skip_pre_process = self.base.is_pre_process_skip(request, instance, create_flag) print skip_pre_process self.assertEqual(skip_pre_process == False, True) def test_is_skip_pre_processing_with_selected_attr_change(self): create_flag = False request = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } instance = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['D', 'D', 'D', 'D'] } } skip_pre_process = self.base.is_pre_process_skip(request, instance, create_flag) print skip_pre_process self.assertEqual(skip_pre_process == False, True) def test_is_skip_pre_processing_without_change(self): create_flag = False request = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } instance = { 'data_path':'/path/to/dummy/file.csv', 'selected_attrs':{ 'names':['A', 'D', 'C', 'B'], 'types':['C', 'C', 'C', 'D'] } } skip_pre_process = self.base.is_pre_process_skip(request, instance, create_flag) self.assertEqual(skip_pre_process == True, True)
def __init__(self, edges, nodes, jtree_path = None): edges = self.convert2rlistofvector(edges) self.LOG = Base.get_logger("JunctionTree") self.jtree = self._build_jtree(edges, nodes, jtree_path)