diff --git a/allure-robotframework/test/library/run.py b/allure-robotframework/test/library/run.py index e9089a01..acd44845 100644 --- a/allure-robotframework/test/library/run.py +++ b/allure-robotframework/test/library/run.py @@ -1,8 +1,7 @@ import os +import robot from tempfile import mkdtemp from multiprocessing import Process -from robot import run -from allure_robotframework import allure_robotframework from allure_commons_test.report import AllureReport @@ -31,32 +30,17 @@ def make_test_case(path, name, test_case): def robot_run_with_allure(work_dir, *args, **kwargs): allure_dir = os.path.join(work_dir, 'allure') + os.mkdir(allure_dir) output_dir = os.path.join(work_dir, 'output') os.mkdir(output_dir) - stdout_file = os.path.join(output_dir, 'stdout.txt') + options = {"listener": "allure_robotframework;%s" % allure_dir, "outputdir": output_dir} + options.update(kwargs) - def target(*a, **kw): - - # ToDo: fix it (_core not works correctly with multiprocessing) - import six - import allure_commons - if six.PY2: - reload(allure_commons._core) - else: - import importlib - importlib.reload(allure_commons._core) - - listener = allure_robotframework(logger_path=allure_dir) - - with open(stdout_file, 'w+') as stdout: - options = {"listener": listener, "outputdir": output_dir, "stdout": stdout} - options.update(kw) - run(*a, **options) - - robot_process = Process(target=target, args=args, kwargs=kwargs) + robot_process = Process(target=robot.run, args=args, kwargs=options) robot_process.start() robot_process.join() return AllureReport(allure_dir) +