code: def run_suite(test_classes, argv=None):
      
      # Parse cli args.
      parser = argparse.ArgumentParser(description='Mobly Suite Executable.')
      parser.add_argument(
          '-c',
          '--config',
          nargs=1,
          type=str,
          required=True,
          metavar='<PATH>',
          help='Path to the test configuration file.')
      parser.add_argument(
          '--tests',
          '--test_case',
          nargs='+',
          type=str,
          metavar='[ClassA[.test_a] ClassB[.test_b] ...]',
          help='A list of test classes and optional tests to execute.')
      if not argv:
          argv = sys.argv[1:]
      args = parser.parse_args(argv)
      # Load test config file.
      test_configs = config_parser.load_test_config_file(args.config[0])
  
      # Check the classes that were passed in
      for test_class in test_classes:
          if not issubclass(test_class, base_test.BaseTestClass):
              logging.error('Test class %s does not extend '
                            'mobly.base_test.BaseTestClass', test_class)
              sys.exit(1)
  
      # Find the full list of tests to execute
      selected_tests = compute_selected_tests(test_classes, args.tests)
  
      # Execute the suite
      ok = True
      for config in test_configs:
          runner = test_runner.TestRunner(config.log_path, config.test_bed_name)
          for (test_class, tests) in selected_tests.items():
              runner.add_test_class(config, test_class, tests)
          try:
              runner.run()
              ok = runner.results.is_all_pass and ok
          except signals.TestAbortAll:
              pass
          except:
              logging.exception('Exception when executing %s.',
                                config.test_bed_name)
              ok = False
      if not ok:
          sys.exit(1)
docs: Executes multiple test classes as a suite.
  
      This is the default entry point for running a test suite script file
      directly.
  
      Args:
          test_classes: List of python classes containing Mobly tests.
          argv: A list that is then parsed as cli args. If None, defaults to cli
              input.