def test_file_query_eval(self): # 正常系 embかつリスト input_list = "['top', 'middle', 'parent']" actual = Action.file_query_eval(input_list, 'emb') self.assertIsInstance(actual, list) expected = ['top', 'middle', 'parent'] self.assertListEqual(actual, expected) # 正常系 refの時 actual = Action.file_query_eval(None, 'ref') self.assertIsNone(actual) # emb eval失敗 input_list = "['top', 'middle', 'paren" with self.assertRaises(SystemExit): _ = Action.file_query_eval(input_list, 'emb') # embなのにリストでない input_list = "{'name':'JJ', 'age':'22', 'flg':'True'}" with self.assertRaises(SystemExit): _ = Action.file_query_eval(input_list, 'emb') # embなのにクエリがない with self.assertRaises(SystemExit): _ = Action.file_query_eval(None, 'emb') # 構造がrefとemb以外の時 with self.assertRaises(SystemExit): input_list = "['top', 'middle', 'parent']" _ = Action.file_query_eval(input_list, 'types')
# iniファイル読み込み settings = configparser.ConfigParser() settings.read(Path.cwd() / 'ini' / 'db.ini') con = dict([i for i in settings['DB'].items()]) db = DB(con) # 対象oidの所属コレクションを自動的に取得 ※動作が遅い場合は使用しないこと collection = db.find_collection_from_objectid(args.objectid) # ドキュメント構造の取得 structure = db.get_structure(collection, args.objectid) # クエリの変換 query = Action.file_query_eval(args.query, structure) # ドキュメント取得 doc = db.doc(collection, args.objectid, query) doc_keys = list(doc.keys()) # 項目を画面表示 for idx, (key, value) in enumerate(doc.items()): print('(' + str(idx) + ')', key, ':', value) # 表示されている選択番号を入力 if len(doc) > 0: while True: selected_idx = input('0 - ' + str(len(doc) - 1) + ' > ') if selected_idx.isdecimal() and (0 <= int(selected_idx) < len(doc)): break