|
- import os
- import json
- import zipfile
- import unittest
- import tempfile
- import argparse
-
- from learnware.client import LearnwareClient
- from learnware.specification import generate_semantic_spec
- from learnware.market import BaseUserInfo
- from learnware.tests import parametrize
-
- class TestAllLearnware(unittest.TestCase):
- client = LearnwareClient()
-
- def __init__(self, method_name='runTest', email=None, token=None):
- super(TestAllLearnware, self).__init__(method_name)
- self.email = email
- self.token = token
-
- if self.email is not None and self.token is not None:
- self.client.login(self.email, self.token)
- else:
- print("Client doest not login, all tests will be ignored!")
-
- @unittest.skipIf(not client.is_login(), "Client doest not login!")
- def test_all_learnware(self):
- max_learnware_num = 1000
- semantic_spec = generate_semantic_spec()
- user_info = BaseUserInfo(semantic_spec=semantic_spec, stat_info={})
- result = self.client.search_learnware(user_info, page_size=max_learnware_num)
- print(f"result size: {len(result)}")
- print(f"key in result: {[key for key in result[0]]}")
-
- failed_ids = []
- learnware_ids = [res["learnware_id"] for res in result]
- with tempfile.TemporaryDirectory(prefix="learnware_") as tempdir:
- for idx in learnware_ids:
- zip_path = os.path.join(tempdir, f"test_{idx}.zip")
- self.client.download_learnware(idx, zip_path)
- with zipfile.ZipFile(zip_path, "r") as zip_file:
- with zip_file.open("semantic_specification.json") as json_file:
- semantic_spec = json.load(json_file)
- try:
- LearnwareClient.check_learnware(zip_path, semantic_spec)
- print(f"check learnware {idx} succeed")
- except:
- failed_ids.append(idx)
- print(f"check learnware {idx} failed!!!")
-
- print(f"The currently failed learnware ids: {failed_ids}")
-
-
- if __name__ == "__main__":
- parser = argparse.ArgumentParser()
- parser.add_argument("--email", type=str, required=False, help="The email to login learnware client")
- parser.add_argument("--token", type=str, required=False, help="The token to login learnware client")
- args = parser.parse_args()
-
- runner = unittest.TextTestRunner()
- runner.run(parametrize(TestAllLearnware, email=args.email, token=args.token))
|