class Book: def __init__(self): self.rp = RequestsPage() self.ep = ElibPage('YZ', 'Td123456') self.slp = DBPage('book') def copyBooks(self, num): """ 编目-回溯建库 此方法用于给每书目添加馆藏 :param num: 每个书目添加多少馆藏(填写100那么每本书添加100条馆藏数据) :return: 无返回 """ # 保存图书信息的 list l = list() # 馆藏信息中的条码号,用于循环递增 count = 0 # 发送 requests 请求,获取书目信息(这是一个 json 值) res_1 = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/catalog/catalogue/list', { 'userToken': self.ep.getUserToken(), 'pageNumber': 1, 'pageSize': 50, 'libId': self.ep.getLibid(), 'userType': 1, 'dateType': 1 }).json() # 循环 requests 返回的书目信息,处理数据 for dataList in res_1['data']['dataList']: bookDefault = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/book/bookDefault', { 'userToken': self.ep.getUserToken(), 'marctyId': dataList['marctyid'] }).json() # print(bookDefault) # # 处理返回值,获取 著者 字段 # fl = self.rp.matchString(dataList['fieldList']) # # 处理没有 著者 字段的图书,返回一个空值 # if len(fl) == 0: # fl = [''] # 添加信息到 list 中 l.append( (dataList['ztming'], dataList['zrsming'], dataList['isbn'], dataList['cbzhe'], bookDefault['data']['author'], dataList['flhao'], 0, 0, 0)) # 循环值,判断什么时候跳出while循环 loopValue = 0 while True: # 循环次数递增 loopValue += 1 # 条码递增 count += 1 # 发送 requests 请求,给每本书一条条添加馆藏 self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/book/save', { 'userToken': self.ep.getUserToken(), 'ztai': bookDefault['data']['bookDeault']['ztai'], 'tiaoma': 'YZ' + str(count).zfill(5), 'bookCodes': 'YZ' + str(count).zfill(5), 'sshao': bookDefault['data']['sshao'], 'gysid': self.ep.getGysid(isMore=False), 'batchid': self.rp.randomValue(self.ep.getBatchid()), 'ltlxid': self.ep.getLtlxid(isMore=False), 'cygid1': bookDefault['data']['bookDeault']['cygid1'], 'cygid0': bookDefault['data']['bookDeault']['cygid0'], 'ysuanid': self.ep.getYsid(isMore=False), 'marctyId': dataList['marctyid'], 'cejia': bookDefault['data']['bookDeault']['cejia'], 'taojia': bookDefault['data']['bookDeault']['taojia'], 'czid0': self.ep.getCzid(isMore=False), 'czid1': self.ep.getCzid(isMore=False), 'bookNum': 1, 'flhao': bookDefault['data']['fzqfhDTO']['flhao'], 'zchao': bookDefault['data']['fzqfhDTO']['zchao'], 'ljf': bookDefault['data']['fzqfhDTO']['ljf'], 'fzqfh': bookDefault['data']['fzqfhDTO']['fzqfh'], 'purchasePrice': '', 'purchaseDiscount': '', 'jcmshu': '', 'beizhu': '', 'sellPrice': '', 'wxlyuan': '', 'jzleixing': '', 'zdfangshi': '', 'sellDiscount': '' }).json() # 控制什么时候跳出死循环,每本书目添加 num 本馆藏后跳出,添加下一本 if loopValue >= num: break # 更新数据,将图书信息添加到 tb_book 数据库中 self.slp.addBook(l) def borrowBooks(self): """ 流通-借还管理-借出 此方法用于给读者随机借书 :return:无返回 """ # 将所有图书条码添加到集合中,检查所有添加的条码是否重复 checkDoubleValue = set() # 将每个用户借的图书条码添加到集合中,获取单个用户接了哪几本书 temp_bro = set() # 获取 tb_total 表的数据 tb = self.slp.selectTotal() # 获取 tb_reader 表的数据 selectData = self.slp.selectReader() for tup_1 in selectData: # 将数据库中所有用户的条码添加到集合中查重,防止多次运行借书数据库数据与业务系统对不上 checkDoubleValue = checkDoubleValue | self.rp.modifyTuples(tup_1) for tup_2 in selectData: # 循环值,判断什么时候跳出while循环 loopValue = 0 # 获取随机借书数量(每个人借多少本) a = random.randint(1, 20) # 将个人之前借的书添加到集合中 temp_bro = temp_bro | self.rp.modifyTuples(tup_2) while True: # 获取随机图书条码 randomValue = 'YZ' + str(random.randint(1, 1000)).zfill(5) # 对比图书条码是否已在数据库中存在,存在就不发送借书请求 if randomValue in checkDoubleValue: print('获取随机图书已重复') else: # 发送借书请求 self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/doclx/bro', { 'userToken': self.ep.getUserToken(), 'readerBarcode': tup_2[1], 'bookBarcode': randomValue }) # 所有图书集合 / 个人图书集合添加图书 checkDoubleValue.add(randomValue) temp_bro.add(randomValue) # 循环次数自增 loopValue += 1 # 当循环次数大于等于个人借书随机数,跳出循环 if loopValue >= a: # 更新数据,将读者信息更新到 tb_reader 数据库中 self.slp.updateReader((tup_2[1], tup_2[2], tup_2[3], str(temp_bro), tup_2[5], int(tup_2[6] + len(temp_bro)), int(tup_2[7] + len(temp_bro)), tup_2[8], tup_2[9], tup_2[0])) # 清空个人借书集合,防止插入数据库值错误 temp_bro.clear() break # 处理数据获取借阅数量,返回值是一个 list t = self.rp.modifyNum(checkDoubleValue) # 用于 list 下标递增 lv = 0 for tup_3 in self.slp.selectBook(): # 更新数据,将图书信息更新到 tb_book 数据库中 self.slp.updateBook( (tup_3[1], tup_3[2], tup_3[3], tup_3[4], tup_3[5], tup_3[6], t[lv], tup_3[8], tup_3[9], tup_3[0])) # 下标递增 lv += 1 # 更新数据,将统计信息更新到 tb_total 数据库中 self.slp.updateTotal( (tb[0], int(tb[1]) + len(checkDoubleValue), tb[2], tb[3], str(self.rp.nowTime()))) def returnBooks(self): """ 流通-借还管理-归还 此方法用于给读者随机还书 :return:无返回 """ # 获取 tb_total 表的数据 tb = self.slp.selectTotal() # 好像没用,但是懒得删,怕爆炸 :) count = 0 # temp_bro 用于存放借出图书;temp_ret 用于存放还回图书,循环一次会清空 temp_bro = set() temp_ret = set() # temp_bro_all 用于存放借出图书;temp_ret_all 用于存放还回图书,不会清空 temp_bro_all = set() temp_ret_all = set() # 循环从数据库中取出的 tb_reader 表信息 for tup in self.slp.selectReader(): # 获取数据库中用户借的图书条码,添加到集合中 temp_bro = temp_bro | self.rp.modifyTuples(tup) # 如果借出是空的,就不发送借书请求,更新 tb_reader 数据库 if len(temp_bro) == 0: self.slp.updateReader( (tup[1], tup[2], tup[3], "", tup[5], len(temp_bro), tup[7], int(tup[8]) - len(temp_bro), tup[9], tup[0])) else: # 获取还书随机值 loopValue = random.randint(1, len(temp_bro)) while loopValue > 0: # 好像没软用,不敢删 :) count += 1 # 获取集合中的任意一个条码 temp = temp_bro.pop() # 将还回条码添加到还回集合中 temp_ret.add(temp) # 发送 requests 请求,用户还书 self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/doclx/ret', { 'userToken': self.ep.getUserToken(), 'isSameCz': '1', 'bookBarcode': temp }) # 递减到0退出循环 loopValue -= 1 # 数据库中借书为空时运行程序容易把set()插入数据库中,做下处理 # 如果借书为空,传空字符串 if str(temp_bro) == 'set()': self.slp.updateReader( (tup[1], tup[2], tup[3], '', str(temp_ret), len(temp_bro), tup[7], int(tup[7]) - len(temp_bro), tup[9], tup[0])) # 借书不为空,就把信息更新到 tb_reader 数据库中 else: self.slp.updateReader( (tup[1], tup[2], tup[3], str(temp_bro), str(temp_ret), len(temp_bro), tup[7], int(tup[7]) - len(temp_bro), tup[9], tup[0])) # 将每个人的借/还书添加到一个集合中 temp_bro_all = temp_bro_all | temp_bro temp_ret_all = temp_ret_all | temp_ret # 清空集合,防止程序错误 temp_bro.clear() temp_ret.clear() # 处理数据,获取各图书的还数量 tba = self.rp.modifyNum(temp_bro_all) tra = self.rp.modifyNum(temp_ret_all) # 用于 list 下标递增 lv = 0 # 更新数据,将图书信息更新到 tb_book 数据库中 for tup_3 in self.slp.selectBook(): self.slp.updateBook( (tup_3[1], tup_3[2], tup_3[3], tup_3[4], tup_3[5], tup_3[6], tba[lv], tra[lv], tup_3[9], tup_3[0])) # 下标递增 lv += 1 # 更新数据,将统计信息更新到 tb_total 数据库中 self.slp.updateTotal( (tb[0], tb[1], tb[2] + count, tb[3], str(self.rp.nowTime()))) def renewBooks(self): """ 流通-借还管理-续借 此方法用于给读者随机续借 :return:无返回 """ # 保存每个用户借阅的图书 temp = set() # 所有用户借阅的图书 tenp_all = set() # 统计数据用 count = 0 # 获取 tb_total 表的数据 tb = self.slp.selectTotal() # 循环从数据库中取出的 tb_reader 表信息 for tup in self.slp.selectReader(): # 循环值,判断什么时候跳出while循环 loopValue = 1 # 获取数据库中用户借的图书条码,添加到集合中 temp = temp | self.rp.modifyTuples(tup) # print(temp) # 空的不处理 if len(temp) != 0: # 获取续借随机值(每个用户续借多少本) a = random.randint(1, len(temp)) while a >= loopValue: # 获取set中的任意值 t = temp.pop() # 将所有续借条码添加到集合中 tenp_all.add(t) count += 1 # 发送 requests 请求,用户续借 self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/doclx/ren', { 'userToken': self.ep.getUserToken(), 'readerBarcode': tup[1], 'bookBarcode': t }) loopValue += 1 # 更新数据,将统计信息更新到 tb_reader 数据库中 self.slp.updateReader((tup[1], tup[2], tup[3], tup[4], tup[5], tup[6], tup[7], tup[8], a, tup[0])) temp.clear() # 处理数据,获取各图书的续借数量 t = self.rp.modifyNum(tenp_all) # 用于 list 下标递增 lv = 0 # 更新数据,将图书信息更新到 tb_book 数据库中 for tup_3 in self.slp.selectBook(): self.slp.updateBook( (tup_3[1], tup_3[2], tup_3[3], tup_3[4], tup_3[5], tup_3[6], tup_3[7], tup_3[8], t[lv], tup_3[0])) # 下标递增 lv += 1 # 更新数据,将统计信息更新到 tb_total 数据库中 self.slp.updateTotal( (tb[0], tb[1], tb[2], tb[3] + count, str(self.rp.nowTime()))) def allReturnBooks(self): """ 流通-借还管理-归还 此方法用于给读者全部归还 :return:无返回 """ # 发送 requests 请求,用户归还条码1~1000的图书 for n in range(1, 1001): self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/doclx/ret', { 'userToken': self.ep.getUserToken(), 'isSameCz': '1', 'bookBarcode': 'YZ' + str(n).zfill(5) }) def clearBooks(self): """ 流通-借还管理-归还 此方法用于清除所有馆藏图书 :return:无返回 """ # 用于存储馆藏书目的id l = list() # 清空前先把书都还了 self.allReturnBooks() # 发送 requests 请求,获取书目信息,返回 json 值 res_1 = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/catalog/catalogue/list', { 'userToken': self.ep.getUserToken(), 'pageNumber': 1, 'pageSize': 50, 'libId': self.ep.getLibid(), 'userType': 1, 'dateType': 1 }).json() # 处理数据 for dataList in res_1['data']['dataList']: # 发送 requests 请求,获取馆藏信息,返回 json 值 res_2 = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/book/listByCatalogue', { 'userToken': self.ep.getUserToken(), 'marctyId': dataList['marctyid'], 'pageSize': 1000, 'pageNumber': 1, 'isShow': 0 }).json() for r in res_2['data']['page']['dataList']: # 将要删除的馆藏 id 添加到列表中 l.append(r['shuceid']) # 发送 requests 请求,删除馆藏信息,返回 json 值 self.rp.sendRequest('POST', self.ep.getUrl() + '/service/api/e/book/delete', { 'userToken': self.ep.getUserToken(), 'shuceIds': ','.join(l) }).json() self.slp.deleteTotal() self.slp.deleteBook()
class Reader: def __init__(self): self.rp = RequestsPage() # self.rpp = ReadPage() self.ep = ElibPage('YZ', 'Td123456') self.slp = DBPage('book') def addReader(self): """ 创建读者 :return: 无返回 """ l = list() # 获取随机值,插如 tb_reader 中 # self.slp.addReader(self.ep.getRandomReaderID()) for n in self.rp.getRandomReaderID(): sex = self.ep.getXingbie() dzdw = self.rp.randomValue(self.ep.getDzdw()) if sex == 1: l.append((n, '男', dzdw, '', '', 0, 0, 0, 0)) else: l.append((n, '女', dzdw, '', '', 0, 0, 0, 0)) # 发送添加读者的请求 self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/readerManager/readerManagerSave', { "userToken": self.ep.getUserToken(), "dzzhao": n, # 读者证号 "xming": n, # 姓名 "ztai": "正常", # 状态 "mima": "123456", # 密码 "dzlxid": self.ep.getDzlxid(isMore=False), # 读者类型 "jzrqi": self.rp.nowTime(ty='end'), # 截止日期 "qyrqi": self.rp.nowTime(ty='now'), # 启用日期 "libid": self.ep.getLibid(), # 馆id "smrz": "0", "zhuanye": "其他", "zhiwu": "无", "zcheng": "无", "xueli": "其他", "xingbie": sex, "yajin": "0", "zhiye": "其他", "jycshu": "0", "yycshu": "0", "xjcshu": "0", "wzcshu": "0", "gjhjcshu": "0", "qkuan": "0", "dzdw": dzdw, "registerPlaceId": self.rp.randomValue(self.ep.getRegisterPlaceId()) # 办证地点 }) # 添加到数据库中 self.slp.addReader(l) self.slp.addTotal([(len(l), 0, 0, 0, str(self.rp.nowTime()))]) def deleteReader(self): """ 删除读者 :return: 无返回 """ l = list() # requests 模拟接口必要参数 res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/readerManager/readerManagerList', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50 }).json() for dataList in res['data']['dataList']: # 获取所有读者id,添加到列表中 l.append(dataList['dzid']) # 发送请求删除所有读者 self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/readerManager/readerManagerDel', { 'userToken': self.ep.getUserToken(), 'dzid': ','.join(l) }) # 清空数据库 self.slp.deleteReader()
class LTTest(unittest.TestCase): def __init__(self, *args, **kwargs): super(LTTest, self).__init__(*args, **kwargs) self.book = Book() self.reader = Reader() self.db = DBPage('book') self.rp = RequestsPage() self.ep = ElibPage('YZ', 'Td123456') def test_lttj_default(self): """ 流通-流通统计 获取总计数据 与 tb_total的借/还数 进行比较 :return: """ # TODO: 1. 增加每本图书藏址到数据库中 2. 增加对藏址图书统计的测试 res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/lttjList', { 'userToken': self.ep.getUserToken(), 'type': 1, 'cygid0': self.ep.getLibid(), 'cygid1': self.ep.getLibid(), 'timeType': 1, 'pageSize': 50, 'pageNumber': 1 }).json() self.assertEqual(res['data']['dataList'][0]['list2'][0]['jccs'], str(self.db.selectTotal()[1])) self.assertEqual(res['data']['dataList'][0]['list2'][0]['ghcs'], str(self.db.selectTotal()[2])) def test_ltxd_default(self): """ 流通-流通详单 获取总的数据数量 与 tb_total的借/还/续相加 进行比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/ltxd', { 'userToken': self.ep.getUserToken(), 'pageNumber': 1, 'pageSize': 50, 'libId': self.ep.getLibid() }).json() result = self.db.selectTotal()[1] + self.db.selectTotal( )[2] + self.db.selectTotal()[3] self.assertEqual(res['data']['totalElements'], str(result)) def test_ltxd_search_readerId(self): """ 流通-流通详单 查询每个读者的借/还/续总量 与 tb_reader的读者借/还/续相加 进行比较 :return: """ for data in self.db.selectReader(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/ltxd', { 'userToken': self.ep.getUserToken(), 'pageNumber': 1, 'pageSize': 50, 'libId': self.ep.getLibid(), 'dzzhao': data[1] }).json() self.assertEqual(res['data']['totalElements'], str(data[7] + data[8] + data[9])) def test_ltxd_search_title(self): """ 流通-流通详单 查询每本书的借/还/续总量 与 tb_book的图书借/还/续相加 进行比较 PS:由于tb_book中的借数量是减掉了还的数量,所以统计时还的数量应该为2倍 :return: """ for data in self.db.selectBook(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/ltxd', { 'userToken': self.ep.getUserToken(), 'pageNumber': 1, 'pageSize': 50, 'libId': self.ep.getLibid(), 'ztming': data[1] }).json() self.assertEqual(res['data']['totalElements'], str(data[7] + data[8] * 2 + data[9])) def test_dzjyphb_default(self): """ 流通-读者借阅排行榜 查询每个读者的总借阅册次 与 tb_reader的读者总借阅册次 进行比较 :return: """ for data in self.db.selectReader(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/dzjyphb', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'renshu': 100, 'pageNumber': 1, 'pageSize': 50, 'jycs': 1, 'dzzhao': data[1] }).json() self.assertEqual(res['data']['dataList'][0]['jieyuecs'], data[7] + data[9]) def test_dzjhtj_default(self): """ 流通-读者借还统计 查询每个读者的借/还/续次数 与 tb_reader的借/还/续次数 进行比较 :return: """ for data in self.db.selectReader(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/dzjhtj', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50, 'dzzhao': data[1] }).json() self.assertEqual(res['data']['page']['dataList'][0]['jieyuecs'], data[7] + data[9]) self.assertEqual(res['data']['page']['dataList'][0]['guihuancs'], data[8]) self.assertEqual(res['data']['page']['dataList'][0]['xujiecs'], data[9]) def test_wxjyphb_default(self): """ 流通-文献借阅排行榜 查询每本书的总借阅册次 与 tb_book的读者总借阅册次 进行比较 :return: """ for data in self.db.selectBook(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/wxjyphb', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'renshu': 100, 'pageNumber': 1, 'pageSize': 50, 'jycs': 1, 'ztming': data[1] }).json() print(data) print(res['data']['dataList'][0]) for r in res['data']['dataList']: if r['ztming'] == data[1]: self.assertEqual(res['data']['dataList'][0]['jieyuecs'], data[7] + data[8]) def test_wxjhtj_default(self): """ 流通-文献借还统计 查询每个大类的借阅册次 与 tb_book的每个书目挑选相关类型相加 进行比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/wxjhtj', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid() }).json() for data in res['data']: val = 0 for d in self.db.selectBookFlh(data['wxlx']): val = val + d[0] + d[1] + d[2] self.assertEqual(data['jycs'], str(val)) def test_dzlxjhtj_default(self): """ 流通-读者类型借还统计 因为只有一个读者类型,所以直接和 tb_total 的借阅数/归还数进行比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/dzlxjhtj', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 15 }).json() for data in res['data']['dataList']: self.assertEqual( data['jieyuecs'], self.db.selectTotal()[1] + self.db.selectTotal()[3]) self.assertEqual(data['guihuancs'], self.db.selectTotal()[2]) def test_dzdwjhtj_default(self): """ 流通-读者单位借还统计 根据数据库中读者的读者单位全部相加 进行比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/dzdwjhtj', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 15 }).json() for data in res['data']['dataList']: val_bro, val_ret = 0, 0 for d in self.db.selectReaderDzdw(data['dzdw']): val_bro = val_bro + d[0] + d[3] val_ret = val_ret + d[1] self.assertEqual(data['jieyuecs'], val_bro) self.assertEqual(data['guihuancs'], val_ret) def test_zzph_default(self): """ 流通-著者排行 根据数据库中书目的著者比较借阅次数 PS:借阅次数在还书方法中减掉了还书次数,所以完整的借阅次数应该为借阅次数+归还次数 :return: """ for data in self.db.selectBook(): if data[5] == '': break else: res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/authorRank', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50, 'equalType': 1, 'brwNum': 1, 'rankNum': 100, 'author': data[5] }).json() self.assertEqual(res['data']['dataList'][0]['brwNum'], str(data[7] + data[8])) def test_dzbqjhtj_defaul(self): """ 流通-读者标签借还统计 根据 selectReaderDzdw 方法,会返回读者借/还/性别的元祖,根据性别将借/还相添加比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/readerLabelCir', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50 }).json() for data in res['data']['dataList']: bro_num, ret_num = 0, 0 for d in self.db.selectReaderDzdw(data['readerUnit']): if d[2] == data['readerGenderName']: bro_num = bro_num + d[0] + d[3] ret_num = ret_num + d[1] self.assertEqual(data['brwNum'], bro_num) self.assertEqual(data['returnNum'], ret_num) def test_dzxbjytj_defaul(self): """ 流通-读者性别借阅统计 根据 selectReaderSex 方法,会返回读者借/续的元祖,将借/续相添加比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/readerGenderBorrowList', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'statisticalPeriod': 0, 'pageNumber': 1, 'pageSize': 50 }).json() num_1, num_2, man_num, famale_num = 0, 0, 0, 0 for data in res['data']['dataList']: man_num = man_num + int(data['manBorrwoNumber']) famale_num = famale_num + int(data['femaleBorrowNumber']) for mNum in self.db.selectReaderSex('男'): num_1 = num_1 + mNum[0] + mNum[1] for fNum in self.db.selectReaderSex('女'): num_2 = num_2 + fNum[0] + fNum[1] self.assertEqual(num_1, man_num) self.assertEqual(num_2, famale_num) def test_dzxbjytj_total(self): """ 流通-读者性别借阅统计 由于测试时合计小于月数量,故将月数量循环相加与合计相比较 :return: """ res_1 = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/readerGenderBorrowList', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'statisticalPeriod': 0, 'pageNumber': 1, 'pageSize': 50 }).json() res_2 = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/totalGenderBorrow', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50 }).json() man_num, famale_num = 0, 0 for data in res_1['data']['dataList']: print(data) man_num = man_num + int(data['manBorrwoNumber']) famale_num = famale_num + int(data['femaleBorrowNumber']) print(res_2['data']) self.assertEqual(man_num, res_2['data']['manBorrow']) self.assertEqual(famale_num, res_2['data']['femaleBorrow']) def test_jysktj_default(self): """ 流通-借阅时刻统计 获取合计数量和数据库 tb_book 借阅/续借相比较 :return: """ res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/timeBorrowList', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'date1': self.rp.nowTime('start'), 'date2': self.rp.nowTime('end'), 'time1': '00', 'time2': '00' }).json() data = self.db.selectTotal() self.assertEqual(res['data']['totalBorrow'][0], data[1] + data[3]) def test_jysktj_total(self): """ 流通-借阅时刻统计 获取合计数量和各个时间段 相比较 :return: """ num = 0 res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/lttj/timeBorrowList', { 'userToken': self.ep.getUserToken(), 'libId': self.ep.getLibid(), 'date1': self.rp.nowTime('start'), 'date2': self.rp.nowTime('end'), 'time1': '00', 'time2': '00' }).json() for data in res['data']['hourList']: num = num + int(data['borrowNumber']) self.assertEqual(res['data']['totalBorrow'][0], num) def test_dzdqjycx_default(self): """ 流通-读者当前借阅查询 每本书进行搜索,搜索的到就ok :return: """ for data in self.db.selectReader(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjycx', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'dzzhao': data[1], 'pageNumber': 1, 'pageSize': 50 }).json() num = 0 for d in res['data']['dataList']: num += 1 if d['tiaoma'] in data[4]: self.assertTrue(True) else: self.assertTrue(False) self.assertEqual(num, len(self.rp.modifyTuples(data))) def test_dzdqjycx_total(self): """ 流通-读者当前借阅查询 计算每个用户图书的数量,和总量进行比较 :return: """ num = 0 res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjycx', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50 }).json() for data in self.db.selectReader(): num = num + len(self.rp.modifyTuples(data)) self.assertEqual(num, int(res['data']['totalElements'])) def test_dzlsjycx_default(self): """ 流通-读者历史借阅查询 每本书进行搜索,搜索的到就ok :return: """ for data in self.db.selectReader(): res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjylscx', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'dzzhao': data[1], 'pageNumber': 1, 'pageSize': 50 }).json() print(res) num = 0 for d in res['data']['dataList']: num += 1 if d['tiaoma'] in data[5]: self.assertTrue(True) else: self.assertTrue(False) self.assertEqual(num, len(self.rp.modifyTuples(data, value=5))) def test_dzlsjycx_total(self): """ 流通-读者历史借阅查询 计算每个用户图书的数量,和总量进行比较 :return: """ num = 0 res = self.rp.sendRequest( 'POST', self.ep.getUrl() + '/service/api/e/flow/ltcx/dzjylscx', { 'userToken': self.ep.getUserToken(), 'libid': self.ep.getLibid(), 'pageNumber': 1, 'pageSize': 50 }).json() for data in self.db.selectReader(): num = num + len(self.rp.modifyTuples(data, value=5)) self.assertEqual(num, int(res['data']['totalElements']))