def bindPico(UserID, group, IsTrader, accountType): # 连接account测试服务器 consulAccountHost = FMCommon.consul_operater( host=userData['consulHost'], port=userData['consulPort'], server='followme.srv.account', key='ServiceAddress') consulAccountPort = FMCommon.consul_operater( host=userData['consulHost'], port=userData['consulPort'], server='followme.srv.account', key='ServicePort') accountChannel = grpc.insecure_channel(consulAccountHost + ':' + str(consulAccountPort)) accountStub = account_pb2_grpc.AccountSrvStub(accountChannel) # 连接dealer测试服务器 http://10.1.0.4:8500 consulDealerHost = FMCommon.consul_operater( host=userData['consulHost'], port=userData['consulPort'], server='followme.srv.copytrade.dealer.pico', key='ServiceAddress') consulDealerPort = FMCommon.consul_operater( host=userData['consulHost'], port=userData['consulPort'], server='followme.srv.copytrade.dealer.pico', key='ServicePort') dealerChannel = grpc.insecure_channel(consulDealerHost + ':' + str(consulDealerPort)) dealerStub = mt4dealer_pb2_grpc.MT4DealerSrvStub(dealerChannel) bindPico = dealerStub.CreateAccount( mt4dealer_pb2.Account(Name='MAM_ACCOUNT_' + str(UserID), Password='******', BrokerID=1, Group=group, City='sz')) login = bindPico.Login # 将注册的用户提取到t_useraccount表 accountStub.SaveUserAccount( account_pb2.SaveUserAccountRequest( User=account_pb2.User(Id=UserID), BrokerID=1, MT4Account=str(login), IsTrader=IsTrader, AccountCreateType=0, IsBind=2, AccountType=accountType)) # pico入金 dealerStub.DepositWithdraw( mt4dealer_pb2.DepositWithdrawMessage( Login=login, Price=10000000, Comment='Deposit With script.')) return bindPico
def test_test1(self): # self.userID = 169204 # self.isTrader = False #交易员:1, 跟随者:0 # self.accountType = 3 for userInfo in load_dict["items"]: print("isTrader:", userInfo["isTrader"]) if userInfo["accountType"] == 3: self.group = 'a_balance' elif userInfo["accountType"] == 1: self.group = 'ct_pico' bindPico = self.dealerStub.CreateAccount( mt4dealer_pb2.Account(Name='MAM_ACCOUNT_' + str(userInfo["UserID"]), Password='******', BrokerID=1, Group=self.group, City='sz')) print(bindPico) self.login = bindPico.Login self.assertEqual(bindPico.Name, "MAM_ACCOUNT_" + str(userInfo["UserID"])) # 断言绑定的经济商为:1. 晋峰 self.assertEqual(bindPico.BrokerID, 1) # 将注册的用户提取到t_useraccount表 # accounttype:Demo = 0,Real = 1,Sam = 2,Mam = 3 saveUserAccount = self.accountStub.SaveUserAccount( account_pb2.SaveUserAccountRequest( User=account_pb2.User(Id=userInfo["UserID"]), BrokerID=1, MT4Account=str(self.login), IsTrader=userInfo["isTrader"], AccountCreateType=0, IsBind=2, AccountType=userInfo["accountType"])) self.assertEqual(saveUserAccount.Success, 0) # pico入金 self.dealerStub.DepositWithdraw( mt4dealer_pb2.DepositWithdrawMessage( Login=self.login, Price=userInfo["price"], Comment='Deposit With script.'))
def test_RegisterByEmail(self): #发布微博 self.userId = '169202' self.body = '开心就好hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh' addBlog = self.socailStub.BlogAdd(social3Message_pb2.BlogAddInput(UserId = int(self.userId),Body = self.body)) # self.userId = '169202' # self.accountEmail = '*****@*****.**' # self.userPassword = '******' # self.nickName = 'fsa005555' print(self.nickName) # 注册一个测试账号 register = self.accountStub.RegisterByEmail(account_pb2.RegisterUserRequest(User = account_pb2.User(AccountEmail = self.accountEmail ,UserPassword = self.userPassword))) # print(register) # #断言帐号状态为5,未激活 # #AccountStatus: 0 新申请, 1 审核中, 2 正常, 3 锁定(此时交易员才可提取服务费), 4 注销, 5 未激活,6 注销 self.assertEqual(register.AccountStatus, 5) self.assertEqual(register.AccountEmail, self.accountEmail) self.userID = register.Id #新注册的账号需要先激活才能登录 #发送验证码邮件到邮箱 sendActivationEmail = self.accountStub.SendActivationEmail(account_pb2.SendActivationEmailRequest(UserId = self.userID, ActivationCode = 'thisisactivationcode',Email = '*****@*****.**' ,Subject = '注册followme验证码' )) #断言验证码邮件发送成功,返回0 self.assertEqual(sendActivationEmail.Success, 0) #获取验证码 getActivationByObj = self.accountStub.GetActivationByObj(account_pb2.ActivationRequest(ObjectId = self.userID)) vercode = getActivationByObj.VerCode activationCode = getActivationByObj.ActivationCode #激活账号。 #AccountStatus: 0 新申请, 1 审核中, 2 正常, 3 锁定(此时交易员才可提取服务费), 4 注销, 5 未激活,6 注销 validateEmailLink = self.accountStub.ValidateEmailLink(account_pb2.ValidateEmailLinkRequest(UserId = self.userID, VerCode = vercode, ActivationCode = activationCode,Token = str(uuid.uuid1()))) self.assertEqual(validateEmailLink.Success, 0) #设置用户昵称 setNickName = self.accountStub.SetNickName(account_pb2.User(Id = self.userID,NickName = self.nickName)) #检查设置成功后,返回值为:0 self.assertEqual(setNickName.Success, 0) #绑定pico帐号 bindPico = self.dealerStub.CreateAccount(mt4dealer_pb2.Account(Name = 'DEMO_ACCOUNT_' + str(self.userID), Password = '******', BrokerID = 1, Group = 'ct_pico', City = 'sz')) print(bindPico) self.login = bindPico.Login self.assertEqual(bindPico.Name, "DEMO_ACCOUNT_" + str(self.userID)) #断言绑定的经济商为:1. 晋峰 self.assertEqual(bindPico.BrokerID, 1) #将注册的用户提取到t_useraccount表 #accounttype:Demo = 0,Real = 1,Sam = 2,Mam = 3 saveUserAccount = self.accountStub.SaveUserAccount(account_pb2.SaveUserAccountRequest(User = account_pb2.User(Id = self.userID), BrokerID = 1, MT4Account = str(self.login), IsTrader = 0, AccountCreateType = 0, IsBind = 2,AccountType = 1)) self.assertEqual(saveUserAccount.Success, 0) #pico入金 self.dealerStub.DepositWithdraw(mt4dealer_pb2.DepositWithdrawMessage(Login = self.login, Price = 9999999, Comment = 'Deposit With script.')) #登录 self.signinToken = str(uuid.uuid1()) signin = self.accountStub.Login(account_pb2.LoginRequest(User = account_pb2.User(AccountEmail = self.accountEmail, UserPassword = self.userPassword) ,Token = self.signinToken)) self.assertEqual(signin.Id, self.userID) print("signin:>>>>>>>", signin)
def test_Accountfunds(self): '''验证没有持仓单时,账户资金信息:总收益,余额,净值,持仓总手数,浮动收益,可以用保证金,已用保证金''' userData['headers'] = dict( userData['headers'], **{'Authorization': userData['Bearer'] + self.token}) # 获取交易员的accountindex self.tradeAccountIndex = Account.getSpecialAccountIndex( headers=userData['headers'], brokerID=5) # 切换到MT4账号 switchAccountRes = Account.switchAccount( userData['hostName'] + userDataAccount['switchAccount'], userData['headers'], self.tradeAccountIndex[0]) self.assertEqual(switchAccountRes.status_code, userData['status_code_200']) # 获取交易token getTokenRes = Trade.getToken( userData['hostName'] + userDataAccount["getToken_url"], userData['headers']) FMCommon.printLog('getTokenRes: ' + getTokenRes.text) self.assertEqual(getTokenRes.status_code, userData['status_code_200']) tradeToken = str(json.loads( getTokenRes.content)["data"]["Token"]).replace("=", "@") MT4Account = json.loads(getTokenRes.content)["data"]["MT4Account"] # 获取当前用户的交易订单 params = {userData['orderStatus']: userData['orderStatus_open']} getOrders = Order.getOrders(userData['hostName'] + order['getOrders_url'], userData['headers'], params=params) self.assertEqual(getOrders.status_code, userData['status_code_200']) ordersIDList = Order.getOrdersID(getOrders) # 平掉当前用户所有订单 closeParam = { userDataWebSocket['orderParam_code']: userDataWebSocket['ws_code_219'], userDataWebSocket['orderParam_tickets']: ordersIDList } closePositionRes = TradeOnline.OnlineTradeEvent.tradeEvent( self, userDataWebSocket['ws_host'], userDataWebSocket['ws_port'], {'token': tradeToken}, closeParam) self.assertEqual(closePositionRes["code"], userDataWebSocket['ws_code_0']) self.assertEqual(closePositionRes["rcmd"], userDataWebSocket['ws_code_219']) self.assertEqual(closePositionRes['success_tickets'], ordersIDList) time.sleep(3) # 获取当前用户的交易订单 params = {userData['orderStatus']: userData['orderStatus_open']} getOrders = Order.getOrders(userData['hostName'] + order['getOrders_url'], userData['headers'], params=params) self.assertEqual(getOrders.status_code, userData['status_code_200']) self.assertEqual( json.loads(getOrders.text)['data']['total'], 0, "持仓总手数不对") #获取当前用户的账户资产getProperty params = {"accountIndex": str(self.tradeAccountIndex[0])} getPropertyRES = Trade.getProperty(userData['hostName'] + userDataTrade["getProperty_url"], userData['headers'], params=params) FMCommon.printLog('getPropertyRES:', getPropertyRES.text) self.assertEqual(getPropertyRES.status_code, userData['status_code_200']) #总收益 TotalProfit = json.loads(getPropertyRES.text)['data']['TotalProfit'] #余额 Balance = round(json.loads(getPropertyRES.text)['data']['Balance'], 2) print("Balance:", Balance) #净值 NetValue = round( json.loads(getPropertyRES.text)['data']['NetValue'], 2) print("NetValue:", NetValue) #浮动收益 FloatProfit = round( json.loads(getPropertyRES.text)['data']['FloatProfit'], 2) #入金 InMoney = round(json.loads(getPropertyRES.text)['data']['InMoney'], 2) #出金 OutMoney = round( json.loads(getPropertyRES.text)['data']['OutMoney'], 2) #杠杆 Leverage = round( json.loads(getPropertyRES.text)['data']['Leverage'], 2) #已用保证金 MARGIN = round(json.loads(getPropertyRES.text)['data']['MARGIN'], 2) #可用保证金 MARGIN_FREE = round( json.loads(getPropertyRES.text)['data']['MARGIN_FREE'], 2) print("MARGIN_FREE:", MARGIN_FREE) #信用 Credit = round(json.loads(getPropertyRES.text)['data']['Credit'], 2) #获取grpc账户信息rpc GetAccount(Account) returns (Account) {} GetAccount = self.dealerStub.GetAccount( mt4dealer_pb2.Account(Login=int(MT4Account), BrokerID=1)) print("GetAccount:", GetAccount) sql = "select BALANCE,CREDIT,EQUITY,MARGIN,MARGIN_FREE,Leverage FROM T_MT4Users WHERE LOGIN='******'" % ( MT4Account) row = FollowOperation.Operation.operationV3DB(sql) print("row:", row) # self.assertEqual(GetAccount.Login, int(MT4Account), "账户不相同") # self.assertEqual(GetAccount.Leverage, Leverage, "杠杆不相同") # self.assertEqual(GetAccount.Balance, Balance,"余额不相同") # self.assertEqual(GetAccount.Equity, NetValue, "净值不相同") # self.assertEqual(GetAccount.FreeMargin, NetValue, "可用保证金不相同") # self.assertEqual(GetAccount.Credit, row[0][1], "信用额度不相同") # self.assertEqual(GetAccount.Margin, 0, "已用保证金不相同") # self.assertEqual(GetAccount.Profit, 0, "浮动收益不相同") # self.assertEqual(FloatProfit, 0, "浮动收益不相同") #result tpspParam = { userDataWebSocket['orderParam_code']: userDataWebSocket['ws_code_222'] } tpspParamRes = TradeOnline.OnlineTradeEvent.tradeEvent( self, userDataWebSocket['ws_host'], userDataWebSocket['ws_port'], {'token': "" + tradeToken}, tpspParam) print("tpspParamRes:", tpspParamRes) self.assertEqual(tpspParamRes["code"], userDataWebSocket['ws_code_0']) login = tpspParamRes['account']["login"] balance = tpspParamRes['account']["balance"] credit = tpspParamRes['account']["credit"] margin = tpspParamRes['account']["margin"] free_margin = tpspParamRes['account']["free_margin"] margin_level = tpspParamRes['account']["margin_level"] equity = tpspParamRes['account']["equity"] self.assertEqual(GetAccount.Login, int(MT4Account), "账户不相同") self.assertEqual(GetAccount.Login, login, "账户不相同") self.assertEqual(GetAccount.Leverage, Leverage, "杠杆不相同") self.assertEqual(GetAccount.Balance, balance, "余额不相同") self.assertEqual(GetAccount.Equity, equity, "净值不相同") self.assertEqual(GetAccount.FreeMargin, free_margin, "可用保证金不相同") self.assertEqual(GetAccount.Credit, credit, "信用额度不相同") self.assertEqual(GetAccount.Margin, margin, "已用保证金不相同") self.assertEqual(GetAccount.Profit, 0, "浮动收益不相同") self.assertEqual(FloatProfit, 0, "浮动收益不相同")