def pytest_runtest_setup(item): '''Hook to run before every test.''' # Inject header at start of test, following automatic "path/to/test_file.py::test_name": # Don't do this when running in teamcity, where it's redundant. if not teamcity.is_running_under_teamcity(): print(''' ========== ======= START: {}::{} =========='''.format(sdk_utils.get_test_suite_name(item), item.name)) # Check if we're entering a new test suite. global testlogs_test_index global testlogs_current_test_suite test_suite = sdk_utils.get_test_suite_name(item) if test_suite != testlogs_current_test_suite: # New test suite: # 1 Store all the task ids which already exist as of this point. testlogs_current_test_suite = test_suite global testlogs_ignored_task_ids testlogs_ignored_task_ids = testlogs_ignored_task_ids.union( get_task_ids()) log.info( 'Entering new test suite {}: {} preexisting tasks will be ignored on test failure.' .format(test_suite, len(testlogs_ignored_task_ids))) # 2 Reset the test index. testlogs_test_index = 0 # 3 Remove any prior logs for the test suite. test_log_dir = sdk_utils.get_test_suite_log_directory(item) if os.path.exists(test_log_dir): log.info( 'Deleting existing test suite logs: {}/'.format(test_log_dir)) shutil.rmtree(test_log_dir) # Increment the test index (to 1, if this is a new suite), and pass the value to sdk_utils for use internally. testlogs_test_index += 1 sdk_utils.set_test_index(testlogs_test_index) min_version_mark = item.get_marker('dcos_min_version') if min_version_mark: min_version = min_version_mark.args[0] message = 'Feature only supported in DC/OS {} and up'.format( min_version) if 'reason' in min_version_mark.kwargs: message += ': {}'.format(min_version_mark.kwargs['reason']) if sdk_utils.dcos_version_less_than(min_version): pytest.skip(message)
def pytest_runtest_teardown(item): '''Hook to run after every test.''' # Inject footer at end of test, may be followed by additional teardown. # Don't do this when running in teamcity, where it's redundant. if not teamcity.is_running_under_teamcity(): print(''' ========== ======= END: {}::{} =========='''.format(sdk_utils.get_test_suite_name(item), item.name))