class Test_Register(unittest.TestCase): def setUp(self): self.url = "http://ecshop.itsoso.cn/ECMobile/?url=/user/signup" # 请求地址 self.method = 'post' # 请求方式 # 实例化DB self.db = Database() self.fk = Faker('zh_CN') def test_case_01(self): """正向数据注册成功""" name = self.fk.user_name() # 姓名 email = self.fk.email() # 邮箱 phone = self.fk.phone_number() # 手机号 password = self.fk.password() # 密码 id = self.fk.pyint() # 随机整数 data = { "field": [{ "id": id, "value": f"{phone}" }], "email": f"{email}", "name": f"{name}", "password": f"{password}" } response = Interface.register(method='post', url=self.url, data=data) #查看数据库是否注册成功 sql = f"select count(*) from ecs_users where user_name = '{name}'" datas = self.db.one(sql) num = datas['count(*)'] self.assertEqual(num, 1, msg="合法数据注册失败") #将测试数据删除 del_sql = f"delete from ecs_users where user_name='{name}'" self.db.execute(del_sql) @ddt.data(*test_datas) def test_case_02(self, data): req_data = { "field": [{ "id": 5, "value": data["phone"] }], "email": data["email"], "name": data["name"], "password": data["password"] } response = Interface.register(method="post", url=self.url, data=req_data) status = get_result_one(response, "succeed") self.assertEqual(status, 0) # 查找数据库 sql = f"select count(*) from ecs_users where user_name = '{data['name']}';" datas = self.db.one(sql) data = datas['count(*)'] # data==0 self.assertEqual(data, 0, msg="逆向数据注册成功")
def _db_series_save(self): if self.series_id is not None: return self.series_id = Database.execute( """INSERT INTO Series (series_name) VALUES (?)""", (self.series_name, ))
def _db_batch_save(self): if self.batch_id is not None: return self.batch_id = Database.execute( """INSERT INTO Batch (series_id, batch_timestamp, vcs_id) VALUES (?,?,?)""", (self.series_id, self.batch_timestamp, self.vcs_id))
def _db_metadata_save(self): if self.metadata_id is not None: return if self.metadata is None: return self.metadata_id = Database.execute( """INSERT INTO Metadata (metadata) VALUES (?)""", (self.metadata, ))
def _db_vcs_save(self): if self.vcs_id is not None: return if self.vcs_system is None: return self.vcs_id = Database.execute( """INSERT INTO Vcs (vcs_system, vcs_revision) VALUES (?,?)""", (self.vcs_system, self.vcs_revision))
def db_delete(self): Database.execute("""DELETE FROM Test WHERE Test.test_id = (?)""", (self.test_id, )) self.test_id = None if Database.query_one( """SELECT COUNT () FROM Test WHERE Test.batch_id = (?)""", (self.batch_id, )) == 0: Database.execute( """DELETE FROM Batch WHERE Batch.batch_id = (?)""", (self.batch_id, )) self.batch_id = None if Database.query_one( """SELECT COUNT () FROM Batch WHERE Batch.series_id = (?)""", (self.series_id, )) == 0: Database.execute( """DELETE FROM Series WHERE Series.series_id = (?)""", (self.series_id, )) self.series_id = None if Database.query_one( """SELECT COUNT () FROM Test WHERE Test.metadata_id = (?)""", (self.metadata_id, )) == 0: Database.execute( """DELETE FROM Metadata WHERE Metadata.metadata_id = (?)""", (self.metadata_id, )) self.metadata_id = None if Database.query_one( """SELECT COUNT () FROM Batch WHERE Batch.vcs_id = (?)""", (self.vcs_id, )) == 0: Database.execute("""DELETE FROM Vcs WHERE Vcs.vcs_id = (?)""", (self.vcs_id, )) self.vcs_id = None
def _db_test_save(self): if self.test_id is not None: return self.test_id = Database.execute( """INSERT INTO Test (test_name, test_result, test_timestamp, test_duration, batch_id, metadata_id) VALUES (?,?,?,?,?,?)""", ( self.test_name, self.test_result, self.test_timestamp, self.test_duration, self.batch_id, self.metadata_id, ))
class MovePloyFit(object): def __init__(self, env, window_size=90, step=1): #self.env = env self.db = Database(env) self.window_size = window_size self.step = step self.pre_status = (1, 'Max') self.x = [] self.y = [] self.r2_array = np.array([]) def setupPosition(self, pair): return Position(pair) def execute(self, data, pos): for pair in data: # Check if begin analysis if len(self.x) == self.window_size: poly = Polynomial(self.x, self.y) poly.fit() # Evaluation of fitting effect self.r2_array = np.append(self.r2_array, poly.r2()) if self.r2_array.size > 10: self.r2_array = np.delete(self.r2_array, 0) #print('x=%s, y=%s' % (self.x[-1], self.y[-1])) check_point = poly.maxOrMin() # Find min/max point if check_point: # Current extremum status != previous extremum status if check_point[1] != self.pre_status[1]: # Previous fit center point must samller than right side of window if self.pre_status[0] < self.x[-1]: # Trend change, remove pre_fit half curve self.x = [ x for x in self.x if x > self.pre_status[0] ] self.y = self.y[self.window_size - len(self.x):] self.pre_status = check_point # Middle of the window mid = int(len(self.x) / 2) #print('R2=%s' % self.r2_array.mean()) #print('check_point=%s' % check_point[0]) if check_point[1] == 'Min': # Only buy when more than 40% points smaller than predict # Min point find, Buy process if check_point[0] > self.x[mid] and self.r2_array.mean( ) > 0.85: pos.buy(pair) # When Symmetric axis has moved into window, we find the curve fit very well # Then we can lock margin if check_point[0] < self.x[mid] and self.r2_array.mean( ) > 0.85: pos.sell(pair) self.x = [] self.y = [] self.r2_array = np.array([]) else: # Curve has changed, so just sell it. if check_point[0] > self.x[mid]: #if check_point[0] > self.x[mid] and check_point[0] < self.x[-1]: pos.sell(pair) # Only sell when more than 70% points samller than predict if check_point[0] < self.x[mid] and self.r2_array.mean( ) > 0.85: # Max point find, Sell process pos.buy(pair) self.x = [] self.y = [] self.r2_array = np.array([]) #poly.show() self.x = self.x[self.step:] self.y = self.y[self.step:] # Just fill x,y list self.x.append(pair[0]) self.y.append(pair[1]) def regression(self, trade_pair='eos_usdt'): pos = self.setupPosition(trade_pair) sql = 'select rowid,last,time from %s' % trade_pair result = self.db.execute(sql) data = result.fetchall() self.execute(data, pos) pos.show() def realtime(self, trade_pair='eos_usdt'): pos = self.setupPosition(trade_pair) pos.show() # call select every <xxx> second row_id = 0 while (True): sql = 'select rowid,last,time from %s where rowid > %s' % ( trade_pair, row_id) result = self.db.execute(sql) data = result.fetchall() self.execute(data, pos) last_pair = data[-1] row_id = last_pair[0] if pos.ifStop(): break # Waitting for next loop time.sleep(self.step * 10) def showData(self): sql = 'select rowid,last,time from eos_usdt' result = self.db.execute(sql) data = result.fetchall() for pair in data: self.x.append(pair[0]) self.y.append(pair[1]) poly = Polynomial(self.x, self.y) poly.fit()