Advertisement
Guest User

Blue Clover PLT Test Plan Validator

a guest
Sep 22nd, 2021
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.60 KB | None | 0 0
  1. import sys
  2. import yaml
  3.  
  4. def check_test_step_keys(step):
  5.     assert isinstance(step, dict)
  6.     assert 'command' in step.keys() or 'uartcmd' in step.keys(), "Step is missing a command/uartcmd key"
  7.  
  8. def check_test_suite_keys(item):
  9.     # check each required key is included
  10.     assert 'title' in item.keys(), "Test item is missing a title!"
  11.     assert 'steps' in item.keys(), "Test item is missing steps!"
  12.     # make sure each key is valid
  13.     for key in item.keys():
  14.         assert key in ['title', 'retry', 'steps', 'ident'], f"Invalid key in test plan: {key}"
  15.     # check retry type
  16.     if 'retry' in item.keys():
  17.         assert isinstance(item['retry'], int), "'retry' must be an integer!"
  18.  
  19. def check_test_plan_keys(plan):
  20.     # check each required key is included
  21.     assert 'title' in plan.keys(), "Test plan is missing a title!"
  22.     assert 'suite' in plan.keys(), "Test plan is missing suite!"
  23.     # make sure each key is valid
  24.     for key in plan.keys():
  25.         assert key in ['title', 'suite', 'identPrefix'], f"Invalid key in test plan: {key}"
  26.  
  27. with open(sys.argv[1], 'r') as f:
  28.     data = yaml.load(f.read())
  29.  
  30.     check_test_plan_keys(data)
  31.  
  32.     assert isinstance(data['suite'], list)
  33.     for item in data['suite']:
  34.         try:
  35.             check_test_suite_keys(item)
  36.             for step in item['steps']:
  37.                 check_test_step_keys(step)
  38.         except Exception as e:
  39.             print("error occurred in this block:")
  40.             print(yaml.dump(item))
  41.             print("-----------------------------")
  42.             raise e
  43.        
  44.  
  45. print('file is valid!')            
  46.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement