def test__get_getNumpy(self): code = '000001' days = 365 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end) self.assertIsInstance(df, pd.DataFrame, "应返回类型:pd.DataFrame,实际返回数据类型:{}".format(type(df))) arrary = qm.getNumpy(code, start, end) self.assertIsInstance(arrary, np.ndarray, "应返回类型:np.ndarray,实际返回数据类型:{}".format(type(arrary))) self.assertTrue(len(arrary) > days // 10, "返回数据数量应该大于0。")
def test_get_noData(self): code = '600001' # 不存在的股票代码 days = 365 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end) self.assertTrue(df is None, "{}已退市,2020年返回数据数量应该等于0,{}。".format(code, df))
def test_getMin(self): code = '000001' days = 30 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end, frequence='1min') self.assertTrue(len(df) > 0, "返回数据数量应该大于0。") self.assertTrue(len(df[df['close'] > 1000]) < days // 10, "大部分股票价格小于1000") print(df.tail(10))
def test_get(self): code = '000001' days = 365 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end) self.assertIsInstance(df, pd.DataFrame,"应返回类型:pd.DataFrame,实际返回数据类型:{}".format(type(df))) self.assertTrue(len(df) > days // 10, "返回数据数量应该大于0。") print(df.tail())
def test_getAdv(self): code = '000001' days = 365 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.getAdv(code, start, end) self.assertIsInstance(df, QA_DataStruct_Stock_day,"应返回类型:QA_DataStruct_Stock_day,实际返回数据类型:{}".format(type(df))) self.assertTrue(len(df) > days // 10, "返回数据数量应该大于0。") print(df.data.tail())
def test_getMin_datetimestr(self): code = '000001' days = 30 * 1.2 start = str(datetime.datetime.now() - datetime.timedelta(days))[:10] end = str(datetime.datetime.now() - datetime.timedelta(0))[:10] df = qm.get(code, start, end, frequence='1min') self.assertTrue(len(df) > 0, "返回数据数量应该大于0。") print(df.tail(10)) start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df2 = qm.get(code, start, end, frequence='1min') # str化后的时间为开盘时间, self.assertTrue(len(df) >= len(df2)) data1, data2 = df, df2 if len(data1) > len(data2): data1 = data1[-len(data2):] print("array1f的长度比array2长") elif len(data1) < len(data2): data2 = data2[-len(data1):] print("array2的长度比array1长") self.assertTrue(data1.equals(data2), "截取相同长度后的数据应该相同")
def test_data_struct_min_stock(self): code = '000001' days = 10 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end, frequence='1min') if df is not None and len(df.index.names) == 1: df = df.set_index(['date', 'code'], drop=True) ds = qd(frequence=8).dataStruct(df) ds2 = QA_DataStruct_Stock_min(df) self.assertIsInstance(ds, QA_DataStruct_Stock_min) self.assertIsInstance(ds2, QA_DataStruct_Stock_min)
def test_data_struct_stock(self): code = '000001' days = 365 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end) if df is not None: df = df.set_index(['date', 'code'], drop=True) ds = qd().dataStruct(df) ds2 = QA_DataStruct_Stock_day(df) self.assertIsInstance(ds, QA_DataStruct_Stock_day) self.assertIsInstance(ds2, QA_DataStruct_Stock_day)
def test_getAdv_diffQA(self): """和QA返回的数据对比一致性 """ code = '000001' days = 365 * 1.2 start = datetime.datetime.now() - datetime.timedelta(days) end = datetime.datetime.now() - datetime.timedelta(0) df = qm.getAdv(code, start, end) self.assertTrue(len(df) > 0, "返回数据数量应该大于0。") df2 = QA_fetch_stock_day_adv(code, start, end) self.assertTrue(len(df) == len(df2), "和QA返回的数据,长度不一致") # 两种方式检测numpy数据一致性 obo = self.differOneByOne(df.data, df2.data) self.assertTrue(np.array_equal(df, df2), "和QA返回的数据不一致{}".format(obo))
def _get_diffQA(self, code, days): start = (datetime.datetime.now() - datetime.timedelta(days)).date() end = datetime.datetime.now() - datetime.timedelta(0) df = qm.get(code, start, end) self.assertTrue(len(df) > 0, "返回数据数量应该大于0。") df2 = QA_fetch_stock_day(code, start, end, format='pd') # todo 全自动运行时会报错。单独测试不会报错?? if len(df) !=len(df2): print("_get_diffQA : {} {} {} {}".format(start, end,df.head(), df2.head())) print('columns:\n {}\n{}'.format(df.columns, df2.columns)) print(df.equals(df2)) else: print('数据长度{}'.format(len(df))) self.assertTrue(len(df) == len(df2), "和QA返回的数据,长度不一致{}:{}".format(len(df), len(df2))) # 两种方式检测DataFrame数据一致性 obo = self.differOneByOne(df2, df) self.assertTrue(df.equals(df2), "和QA返回的数据不一致{}".format(obo)) return df
def test_getMin_diffQA(self): code = '000001' days = 20 * 1.2 start = str(datetime.datetime.now() - datetime.timedelta(days)) end = str(datetime.datetime.now() - datetime.timedelta(0)) df = qm.get(code, start, end, frequence='1min') df2 = QA_fetch_stock_min(code, start, end=end, format='pd', frequence='1min') # todo df的长度比df2长。未找出原因 data1, data2 = df, df2 self.assertTrue(len(data1) == len(data2), "和QA返回的分钟线数据长度不一致:{}:{}".format(len(data1), len(data2))) if len(data1) > len(data2): print("array1f的长度比array2长") data1 = data1[-len(data2):] elif len(data1) < len(data2): print("array2的长度比array1长") data2 = data2[-len(data1):] obo = self.differOneByOne(data1, data2) self.assertTrue(data1.equals(data2), "和QA返回的分钟线数据不一致:{}".format(obo))