class TestApkParse(unittest.TestCase): """ TestApkParse 测试解析apk包信息""" def setUp(self): self.parser = ApkFileParser() def test_parseinfo(self): """test_parseinfo 正常解析apk文件信息""" fp = os.path.join( cur_dir , "tmp" , "8845970f239f7fbd1c2c6f81861e92a81a43b32e.apk" ) info = self.parser.parse( fp ) self.assertIn("pkg_name",info) self.assertIsInstance(info.get("pkg_name"), str) self.assertIn("version_code",info) self.assertIsInstance(info.get("version_code"), int) self.assertIn("version_name",info) self.assertIsInstance(info.get("version_name"), str) self.assertIn("file_size",info) self.assertIsInstance(info.get("file_size"), int) self.assertIn("file_md5" ,info) self.assertIsInstance(info.get("file_md5"), str) self.assertEquals(len(info.get("file_md5")), 32) self.assertIn("file_name",info) self.assertIsInstance(info.get("file_name"), str) def test_parseerror(self): """test_parseerror 找不到文件、解析包错误测试""" import time fp = os.path.join( projectpath, "tests/tmp" , str(time.time())+".apk" ) # no such file or directory self.assertRaises(OSError, self.parser.parse , fp ) # apk dump failed error fp = os.path.join( projectpath, "tests/tmp" ,"fbaafb5dbf0aa3f6d0ebb40709a52cd8a5104241.apk.bk" ) self.assertRaises( ApkDumpFailError , self.parser.parse , fp )
"out": item['identifier'] + ".apk", "user-agent": settings.USER_AGENT, "split": settings.DOWNLOAD_SPLIT, "min-split-size": settings.DOWNLOAD_MIN_SPLIT_SIZE, "continue": settings.DOWNLOAD_CONTINUE, "max-connection-per-server": settings.DOWNLOAD_MAX_CONNECTION_PER_SERVER, "max-concurrent-downloads": settings.DOWNLOAD_CONCURRENT_DOWNLOADS, "log": settings.DOWNLOAD_LOG_FILE, } arg1 = item['download_url'] sh.aria2c(arg1, **args) import os apkparser = ApkFileParser() class FileParsePipeline(object): """ FileParsePipeline 获取文件信息 获取错误记录 资源队列状态3xxx """ con = con _update_state = _update_state def process_item(self, item, spider=null): apkfile = os.path.join(settings.DOWNLOAD_TMP_DIR, item['identifier'] + ".apk")
def setUp(self): self.parser = ApkFileParser()