Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 1 addition & 3 deletions toolium/behave/environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,10 @@ def before_feature(context, feature):
"""
context.global_status = {'test_passed': True}

# Read @no_driver tag
no_driver = 'no_driver' in feature.tags

# Start driver if it should be reused in feature
context.reuse_driver_from_tags = 'reuse_driver' in feature.tags
if context.toolium_config.getboolean_optional('Driver', 'reuse_driver') or context.reuse_driver_from_tags:
no_driver = 'no_driver' in feature.tags
start_driver(context, no_driver)

# Behave dynamic environment
Expand Down
194 changes: 191 additions & 3 deletions toolium/test/behave/test_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,10 @@
import mock
import pytest

from toolium.behave.environment import get_jira_key_from_scenario, before_all
from toolium.behave.environment import (get_jira_key_from_scenario, before_all, before_feature, before_scenario,
after_scenario, after_feature, after_all)
from toolium.config_files import ConfigFiles
from toolium.config_parser import ExtendedConfigParser

tags = (
(["jira('PROJECT-32')"], 'PROJECT-32'),
Expand Down Expand Up @@ -64,8 +66,8 @@ def test_before_all(create_and_configure_wrapper):


properties = (
('env'),
('Config_environment'),
'env',
'Config_environment',
)


Expand All @@ -86,3 +88,189 @@ def test_before_all_config_environment(create_and_configure_wrapper, property_na
assert context.config_files.config_log_filename is None
assert os.environ['Config_environment'] == 'os'
del os.environ["Config_environment"]


@mock.patch('toolium.behave.environment.start_driver')
def test_before_feature(start_driver):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
feature = mock.MagicMock()
feature.tags = ['a', 'b']

before_feature(context, feature)

# Check that start_driver is not called
start_driver.assert_not_called()


@mock.patch('toolium.behave.environment.start_driver')
def test_before_feature_reuse_driver(start_driver):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
feature = mock.MagicMock()
feature.tags = ['a', 'reuse_driver', 'b']

before_feature(context, feature)

# Check that start_driver is called when reuse_driver tag
start_driver.assert_called_once_with(context, False)
assert context.reuse_driver_from_tags is True


@mock.patch('toolium.behave.environment.start_driver')
def test_before_feature_reuse_driver_no_driver(start_driver):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
feature = mock.MagicMock()
feature.tags = ['a', 'reuse_driver', 'b', 'no_driver']

before_feature(context, feature)

# Check that start_driver is called when reuse_driver tag, with True no_driver param
start_driver.assert_called_once_with(context, True)
assert context.reuse_driver_from_tags is True


@mock.patch('toolium.behave.environment.add_assert_screenshot_methods')
@mock.patch('toolium.behave.environment.DriverWrappersPool')
@mock.patch('toolium.behave.environment.start_driver')
def test_before_scenario(start_driver, DriverWrappersPool, add_assert_screenshot_methods):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
scenario = mock.MagicMock()
scenario.tags = ['a', 'b']

before_scenario(context, scenario)

# Check that start_driver is called
start_driver.assert_called_once_with(context, False)
DriverWrappersPool.stop_drivers.assert_not_called()


@mock.patch('toolium.behave.environment.add_assert_screenshot_methods')
@mock.patch('toolium.behave.environment.DriverWrappersPool')
@mock.patch('toolium.behave.environment.start_driver')
def test_before_scenario_reset_driver(start_driver, DriverWrappersPool, add_assert_screenshot_methods):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
scenario = mock.MagicMock()
scenario.tags = ['a', 'reset_driver', 'b']

before_scenario(context, scenario)

# Check that start_driver and stop drivers are called
start_driver.assert_called_once_with(context, False)
DriverWrappersPool.stop_drivers.assert_called_once_with()


@mock.patch('toolium.behave.environment.add_assert_screenshot_methods')
@mock.patch('toolium.behave.environment.start_driver')
def test_before_scenario_no_driver(start_driver, add_assert_screenshot_methods):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
scenario = mock.MagicMock()
scenario.tags = ['a', 'no_driver', 'b']

before_scenario(context, scenario)

# Check that start_driver is called
start_driver.assert_called_once_with(context, True)


@mock.patch('toolium.behave.environment.add_assert_screenshot_methods')
@mock.patch('toolium.behave.environment.start_driver')
def test_before_scenario_no_driver_feature(start_driver, add_assert_screenshot_methods):
# Create context mock
context = mock.MagicMock()
context.toolium_config = ExtendedConfigParser()
scenario = mock.MagicMock()
scenario.tags = ['a', 'b']
scenario.feature.tags = ['no_driver']

before_scenario(context, scenario)

# Check that start_driver is called
start_driver.assert_called_once_with(context, True)


@mock.patch('toolium.behave.environment.DriverWrappersPool')
def test_after_scenario_passed(DriverWrappersPool):
# Create context mock
context = mock.MagicMock()
context.global_status = {'test_passed': True}
scenario = mock.MagicMock()
scenario.name = 'name'
scenario.status = 'passed'

after_scenario(context, scenario)

# Check that close_drivers is called
assert context.global_status['test_passed'] is True
DriverWrappersPool.close_drivers.assert_called_once_with(context=context, scope='function', test_name='name',
test_passed=True)


@mock.patch('toolium.behave.environment.DriverWrappersPool')
def test_after_scenario_failed(DriverWrappersPool):
# Create context mock
context = mock.MagicMock()
context.global_status = {'test_passed': True}
scenario = mock.MagicMock()
scenario.name = 'name'
scenario.status = 'failed'

after_scenario(context, scenario)

# Check that close_drivers is called
assert context.global_status['test_passed'] is False
DriverWrappersPool.close_drivers.assert_called_once_with(context=context, scope='function', test_name='name',
test_passed=False)


@mock.patch('toolium.behave.environment.DriverWrappersPool')
def test_after_scenario_skipped(DriverWrappersPool):
# Create context mock
context = mock.MagicMock()
context.global_status = {'test_passed': True}
scenario = mock.MagicMock()
scenario.name = 'name'
scenario.status = 'skipped'

after_scenario(context, scenario)

# Check that close_drivers is not called
assert context.global_status['test_passed'] is True
DriverWrappersPool.close_drivers.assert_not_called()


@mock.patch('toolium.behave.environment.DriverWrappersPool')
def test_after_feature(DriverWrappersPool):
# Create context mock
context = mock.MagicMock()
context.global_status = {'test_passed': True}
feature = mock.MagicMock()
feature.name = 'name'

after_feature(context, feature)

# Check that close_drivers is called
DriverWrappersPool.close_drivers.assert_called_once_with(scope='module', test_name='name', test_passed=True)


@mock.patch('toolium.behave.environment.DriverWrappersPool')
def test_after_all(DriverWrappersPool):
# Create context mock
context = mock.MagicMock()
context.global_status = {'test_passed': True}

after_all(context)

# Check that close_drivers is called
DriverWrappersPool.close_drivers.assert_called_once_with(scope='session', test_name='multiple_tests',
test_passed=True)