Guest User

Untitled

a guest
Jun 11th, 2018
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. import csv
  2. import os
  3. from datetime import datetime
  4.  
  5. # Requires pip install github3.py
  6. from github3 import login
  7.  
  8.  
  9. def get_rows(filename):
  10. """A generator that returns rows of a csv as a dictionary """
  11. with open(filename, 'r', encoding='ISO-8859-1') as csvfile:
  12. datareader = csv.DictReader(csvfile)
  13. for row in datareader:
  14. yield {key: value for key, value in row.items()}
  15.  
  16.  
  17. def parse_title(title):
  18. """Exports from test rail seem to have numbers at the beginning.
  19.  
  20. Parse out numbers if they exist or return the title
  21. """
  22. if title[0].isdigit():
  23. title = title.split(' - ')[1]
  24. return title
  25.  
  26.  
  27. def import_issue(repo, issue, created_at=None, milestone=None):
  28. if milestone:
  29. issue['milestone'] = milestone
  30. if created_at:
  31. issue['created_at'] = created_at
  32. else:
  33. issue['created_at'] = datetime.utcnow()
  34.  
  35. repo.import_issue(**issue)
  36. return
  37.  
  38.  
  39. def parse_test_case(row):
  40. """Take in a row from a test case export and return the necessary info as an issue"""
  41. title = "As a tester, I'd like a webview test that asserts {}".format(parse_title(row['Title']))
  42.  
  43. if not row['Steps']:
  44. body = parse_title(row['Title'])
  45. else:
  46. body = row['Steps'] + '\n' + row['Expected Result']
  47.  
  48. return {'title': title, 'body': body}
  49.  
  50.  
  51. if __name__ == '__main__':
  52. user = os.environ['GITHUB_USER']
  53. password = os.environ['GITHUB_PASSWORD']
  54. repo = 'cnx-automation'
  55. milestone = 1
  56.  
  57. gh = login(user, password=password)
  58.  
  59. repo = gh.repository('openstax', repo)
  60.  
  61. for row in get_rows('input/webview_test_cases.csv'):
  62. if row['To be automated Q1'].lower() == 'yes' and row['Is Automated?'].lower() == 'no':
  63. issue = parse_test_case(row)
  64. import_issue(repo, issue, milestone=milestone)
Add Comment
Please, Sign In to add comment