You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

run.py 1.9 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #!/usr/bin/env python
  2. # Copyright (c) Alibaba, Inc. and its affiliates.
  3. import argparse
  4. import os
  5. import sys
  6. import unittest
  7. from fnmatch import fnmatch
  8. from modelscope.utils.logger import get_logger
  9. from modelscope.utils.test_utils import set_test_level, test_level
  10. logger = get_logger()
  11. def gather_test_cases(test_dir, pattern, list_tests):
  12. case_list = []
  13. for dirpath, dirnames, filenames in os.walk(test_dir):
  14. for file in filenames:
  15. if fnmatch(file, pattern):
  16. case_list.append(file)
  17. test_suite = unittest.TestSuite()
  18. for case in case_list:
  19. test_case = unittest.defaultTestLoader.discover(
  20. start_dir=test_dir, pattern=case)
  21. test_suite.addTest(test_case)
  22. if hasattr(test_case, '__iter__'):
  23. for subcase in test_case:
  24. if list_tests:
  25. print(subcase)
  26. else:
  27. if list_tests:
  28. print(test_case)
  29. return test_suite
  30. def main(args):
  31. runner = unittest.TextTestRunner()
  32. test_suite = gather_test_cases(
  33. os.path.abspath(args.test_dir), args.pattern, args.list_tests)
  34. if not args.list_tests:
  35. result = runner.run(test_suite)
  36. if len(result.failures) > 0:
  37. sys.exit(1)
  38. if __name__ == '__main__':
  39. parser = argparse.ArgumentParser('test runner')
  40. parser.add_argument(
  41. '--list_tests', action='store_true', help='list all tests')
  42. parser.add_argument(
  43. '--pattern', default='test_*.py', help='test file pattern')
  44. parser.add_argument(
  45. '--test_dir', default='tests', help='directory to be tested')
  46. parser.add_argument(
  47. '--level', default=0, help='2 -- all, 1 -- p1, 0 -- p0')
  48. args = parser.parse_args()
  49. set_test_level(args.level)
  50. logger.info(f'TEST LEVEL: {test_level()}')
  51. main(args)

致力于通过开放的社区合作,开源AI模型以及相关创新技术,推动基于模型即服务的生态繁荣发展