コード例 #1
0
ファイル: test_register.py プロジェクト: admincard/ECshop
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="逆向数据注册成功")
コード例 #2
0
ファイル: test_result.py プロジェクト: alanbarr/trapp
    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, ))
コード例 #3
0
ファイル: test_result.py プロジェクト: alanbarr/trapp
    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))
コード例 #4
0
ファイル: test_result.py プロジェクト: alanbarr/trapp
    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, ))
コード例 #5
0
ファイル: test_result.py プロジェクト: alanbarr/trapp
    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))
コード例 #6
0
ファイル: test_result.py プロジェクト: alanbarr/trapp
    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
コード例 #7
0
ファイル: test_result.py プロジェクト: alanbarr/trapp
    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,
            ))
コード例 #8
0
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()