Loading robot2doc/__init__.py +2 −1 Original line number Diff line number Diff line name = "robot2doc" version = "2" from main import robot2doc from main import gen_doc robot2doc/main.py +28 −15 Original line number Diff line number Diff line Loading @@ -3,9 +3,12 @@ # Usage: python main.py <FILE_OR_FOLDER> [OUTPUT_FILENAME [MAIN_TITLE]] # from robot.api import TestSuiteBuilder import sys import testspec import os from robot.api import TestSuiteBuilder from testspec import TestSpec, DOC_BASE_SEC, DOC_TC_LEVEL from testpurpose import TP # Configuration Loading @@ -13,6 +16,7 @@ from testpurpose import TP DOC_MAIN_TITLE = 'Annex B (informative): Test Cases' DOC_FILENAME = 'test_spec_from_robot.docx' FILE = "" BASE_SPEC = 'basespec.docx' def keyword_to_line(k): ''' Loading @@ -21,13 +25,13 @@ def keyword_to_line(k): ''' return str(k) + " " + " ".join(k.args) def keywords_to_text(ks): def keywords_to_text(kws): ''' Takes a list of Robot Framework words and returns a multiline text ''' return "\n".join(map(keyword_to_line, ks)) return "\n".join(map(keyword_to_line, kws)) def robot2doc(src, doc_fn, doc_main_tit): def gen_doc(src, doc_fn, doc_main_tit): ''' Converts a Robot test suite to a word document Loading @@ -40,16 +44,24 @@ def robot2doc(src, doc_fn, doc_main_tit): print "Starting.." script_dir = os.path.dirname(os.path.realpath(__file__)) spec = testspec.TestSpec(script_dir('ETSI_GS_Skeleton.docx')) wd = os.getcwd() # Using the absolute path has caused issues. The quick fix is to # move temporarily to the source directory os.chdir(script_dir) try: spec = TestSpec(BASE_SPEC) #finally: # os.chdir(cwd) try: workspace = TestSuiteBuilder().build(file) workspace = TestSuiteBuilder().build(src) except: print "Please check that first argument is a folder of Robot files or a single file." exit(-1) print "Loaded "+ str(len(workspace.suites)) + " test suites." sec = testspec.DOC_BASE_SEC - 1 sec = DOC_BASE_SEC - 1 spec.add_main_heading(doc_main_tit) for suite in workspace.suites: Loading @@ -58,8 +70,9 @@ def robot2doc(src, doc_fn, doc_main_tit): print " Generating test suite: " + str(suite) spec.add_sub_heading(str(suite), sec) for i in suite.tests: print " Generating test: " + str(i) subsec = subsec + 1 spec.add_heading(str(i), testspec.DOC_TC_LEVEL, sec, subsec) spec.add_heading(str(i), DOC_TC_LEVEL, sec, subsec) TP(i.doc).add_to_spec(spec, keywords_to_text(i.keywords)) spec.save(doc_fn) Loading @@ -74,4 +87,4 @@ if __name__ == "__main__": DOC_FILENAME = sys.argv[2] if len(sys.argv) > 2 else DOC_FILENAME DOC_MAIN_TITLE = sys.argv[3] if len(sys.argv) > 3 else DOC_MAIN_TITLE robot2doc(FILE, DOC_FILENAME, DOC_MAIN_TITLE) gen_doc(FILE, DOC_FILENAME, DOC_MAIN_TITLE) robot2doc/testspec.py +6 −2 Original line number Diff line number Diff line #!/env/python import os from docx import Document from docx.shared import Pt from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_BREAK_TYPE Loading @@ -22,6 +23,9 @@ TABLE_STYLE = 'TestTable' class TestSpec(): def __init__(self, path=None): if path: print "opening doc: "+path print "current dir: "+os.getcwd() self.doc = Document(path) @staticmethod Loading Loading
robot2doc/__init__.py +2 −1 Original line number Diff line number Diff line name = "robot2doc" version = "2" from main import robot2doc from main import gen_doc
robot2doc/main.py +28 −15 Original line number Diff line number Diff line Loading @@ -3,9 +3,12 @@ # Usage: python main.py <FILE_OR_FOLDER> [OUTPUT_FILENAME [MAIN_TITLE]] # from robot.api import TestSuiteBuilder import sys import testspec import os from robot.api import TestSuiteBuilder from testspec import TestSpec, DOC_BASE_SEC, DOC_TC_LEVEL from testpurpose import TP # Configuration Loading @@ -13,6 +16,7 @@ from testpurpose import TP DOC_MAIN_TITLE = 'Annex B (informative): Test Cases' DOC_FILENAME = 'test_spec_from_robot.docx' FILE = "" BASE_SPEC = 'basespec.docx' def keyword_to_line(k): ''' Loading @@ -21,13 +25,13 @@ def keyword_to_line(k): ''' return str(k) + " " + " ".join(k.args) def keywords_to_text(ks): def keywords_to_text(kws): ''' Takes a list of Robot Framework words and returns a multiline text ''' return "\n".join(map(keyword_to_line, ks)) return "\n".join(map(keyword_to_line, kws)) def robot2doc(src, doc_fn, doc_main_tit): def gen_doc(src, doc_fn, doc_main_tit): ''' Converts a Robot test suite to a word document Loading @@ -40,16 +44,24 @@ def robot2doc(src, doc_fn, doc_main_tit): print "Starting.." script_dir = os.path.dirname(os.path.realpath(__file__)) spec = testspec.TestSpec(script_dir('ETSI_GS_Skeleton.docx')) wd = os.getcwd() # Using the absolute path has caused issues. The quick fix is to # move temporarily to the source directory os.chdir(script_dir) try: spec = TestSpec(BASE_SPEC) #finally: # os.chdir(cwd) try: workspace = TestSuiteBuilder().build(file) workspace = TestSuiteBuilder().build(src) except: print "Please check that first argument is a folder of Robot files or a single file." exit(-1) print "Loaded "+ str(len(workspace.suites)) + " test suites." sec = testspec.DOC_BASE_SEC - 1 sec = DOC_BASE_SEC - 1 spec.add_main_heading(doc_main_tit) for suite in workspace.suites: Loading @@ -58,8 +70,9 @@ def robot2doc(src, doc_fn, doc_main_tit): print " Generating test suite: " + str(suite) spec.add_sub_heading(str(suite), sec) for i in suite.tests: print " Generating test: " + str(i) subsec = subsec + 1 spec.add_heading(str(i), testspec.DOC_TC_LEVEL, sec, subsec) spec.add_heading(str(i), DOC_TC_LEVEL, sec, subsec) TP(i.doc).add_to_spec(spec, keywords_to_text(i.keywords)) spec.save(doc_fn) Loading @@ -74,4 +87,4 @@ if __name__ == "__main__": DOC_FILENAME = sys.argv[2] if len(sys.argv) > 2 else DOC_FILENAME DOC_MAIN_TITLE = sys.argv[3] if len(sys.argv) > 3 else DOC_MAIN_TITLE robot2doc(FILE, DOC_FILENAME, DOC_MAIN_TITLE) gen_doc(FILE, DOC_FILENAME, DOC_MAIN_TITLE)
robot2doc/testspec.py +6 −2 Original line number Diff line number Diff line #!/env/python import os from docx import Document from docx.shared import Pt from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_BREAK_TYPE Loading @@ -22,6 +23,9 @@ TABLE_STYLE = 'TestTable' class TestSpec(): def __init__(self, path=None): if path: print "opening doc: "+path print "current dir: "+os.getcwd() self.doc = Document(path) @staticmethod Loading