azdev/operations/testtool/pytest_runner.py (26 lines of code) (raw):
# -----------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for
# license information.
# -----------------------------------------------------------------------------
import os
import sys
from knack.log import get_logger
from azdev.utilities import call
def get_test_runner(parallel, log_path, last_failed, no_exit_first, mark):
"""Create a pytest execution method"""
def _run(test_paths, pytest_args):
logger = get_logger(__name__)
if os.name == 'posix':
arguments = ['-x', '-v', '--forked', '-p no:warnings', '--log-level=WARN', '--junit-xml', log_path]
else:
arguments = ['-x', '-v', '-p no:warnings', '--log-level=WARN', '--junit-xml', log_path]
if no_exit_first:
arguments.remove('-x')
if mark:
arguments.append('-m "{}"'.format(mark))
arguments.extend(test_paths)
if parallel:
arguments += ['-n', 'auto']
if last_failed:
arguments.append('--lf')
if pytest_args:
arguments += pytest_args
cmd = sys.executable + ' -m pytest {}'.format(' '.join(arguments))
logger.info('Running: %s', cmd)
return call(cmd)
return _run