Best Python code snippet using slash
conftest.py
Source:conftest.py
...150 def finalize(): # pylint: disable=unused-variable151 returned.__exit__(None, None, None)152 return returned153@pytest.fixture(params=["slashconf", "module"])154def defined_fixture(request, suite, suite_test):155 if request.param == 'slashconf':156 return suite.slashconf.add_fixture()157 elif request.param == 'module':158 return suite_test.file.add_fixture()159 raise NotImplementedError() # pragma: no cover160@pytest.fixture161def gc_marker():162 return GarbageCollectionMarker()163@pytest.fixture(autouse=True, scope="function")164def reset_gossip(request):165 @request.addfinalizer166 def cleanup(): # pylint: disable=unused-variable167 for group in list(gossip.get_groups()):168 if group.name == 'slash':...
test_hook_calling.py
Source:test_hook_calling.py
1# pylint: disable=unused-argument, unused-variable2from contextlib import ExitStack3import slash4from slash import hooks, plugins5from slash.plugins import PluginInterface6import pytest7import gossip8import vintage9from .utils import TestCase as _TestCase, make_runnable_tests, CustomException10class SessionEndException(Exception):11 pass12class SessionStartException(Exception):13 pass14class CustomTestEndException(Exception):15 pass16class BeforeTestCleanupException(Exception):17 pass18def test_test_skip_hook(suite, suite_test, checkpoint):19 slash.hooks.test_skip.register(checkpoint) # pylint: disable=no-member20 suite_test.when_run.skip()21 suite.run()22 assert checkpoint.called_count == 123@pytest.mark.parametrize('autouse', [True, False])24def test_test_start_before_fixture_start(suite, suite_test, defined_fixture, autouse):25 if autouse:26 assert not defined_fixture.autouse # make sure we're not obsolete code and that that's still where it is27 defined_fixture.autouse = True28 else:29 suite_test.depend_on_fixture(defined_fixture)30 event_code = suite.slashconf.add_hook_event('test_start', extra_args=['slash.context.test.__slash__.id'])31 summary = suite.run()32 [result] = summary.get_all_results_for_test(suite_test)33 test_id = result.test_metadata.id34 event = summary.events[event_code, test_id]35 assert summary.events['fixture_start', defined_fixture.id].timestamp > event.timestamp36def test_last_test_end_after_session_cleanup(suite, last_suite_test):37 test = last_suite_test38 @test.append_body39 def __code__(): # pylint: disable=unused-variable40 import gossip # pylint: disable=redefined-outer-name,reimported41 # pylint: disable=undefined-variable,unused-variable42 def session_cleanup_callback():43 __ut__.events.add('session_cleanup')44 slash.add_cleanup(session_cleanup_callback, scope='session')45 @gossip.register('slash.test_end')46 def test_end_callback():47 __ut__.events.add('test_end')48 events = suite.run().events49 assert events['test_end'].timestamp < events['session_cleanup'].timestamp50def test_no_error_hooks_called_on_success(suite):51 called = []52 for hook_name in ['test_error', 'test_failure', 'test_skip', 'error_added']:53 gossip.register(lambda name=hook_name, **kw: called.append(name), 'slash.{}'.format(hook_name))54 suite.run()55 assert not called56def test_hook__error_added_during_test(suite, request, checkpoint, suite_test):57 request.addfinalizer(58 hooks.error_added.register(checkpoint) # pylint: disable=no-member59 .unregister)60 suite_test.when_run.raise_exception()61 summary = suite.run()62 assert checkpoint.called63 [result] = summary.get_all_results_for_test(suite_test)64 assert checkpoint.kwargs['result'] is result65def test_hook__error_added_after_test(suite, request, checkpoint, suite_test):66 request.addfinalizer(67 hooks.error_added.register(checkpoint) # pylint: disable=no-member68 .unregister)69 summary = suite.run()70 assert not checkpoint.called71 [result] = summary.get_all_results_for_test(suite_test)72 try:73 1 / 074 except:75 result.add_error()76 assert checkpoint.called77 assert checkpoint.kwargs['result'] is result78 assert 'ZeroDivisionError' in str(checkpoint.kwargs['error'])79def test_hook__test_interrupt(suite, request, checkpoint):80 request.addfinalizer(81 hooks.test_interrupt.register(checkpoint) # pylint: disable=no-member82 .unregister)83 test_index = int(len(suite) / 2)84 for index, test in enumerate(suite):85 if index == test_index:86 test.when_run.interrupt()87 elif index > test_index:88 test.expect_deselect()89 suite.run(expect_interruption=True)90 assert checkpoint.called91def test_hook__test_failure_without_exception(suite, request, checkpoint, suite_test):92 request.addfinalizer(93 hooks.test_failure.register(checkpoint) # pylint: disable=no-member94 .unregister)95 suite_test.append_line('slash.add_failure("failure")')96 suite_test.expect_failure()97 suite.run()98 assert checkpoint.called99@pytest.mark.parametrize(100 'hook_name,exception_type,should_raise', [101 ('slash.session_start', SessionStartException, True),102 ('slash.session_end', SessionEndException, True),103 ('slash.test_end', CustomTestEndException, False),104 ('slash.before_test_cleanups', BeforeTestCleanupException, False)])105@pytest.mark.parametrize('debug_enabled', [True, False])106def test_debugger_called_on_hooks(request, hook_name, exception_type, should_raise, forge, config_override, checkpoint, debug_enabled):107 @gossip.register(hook_name)108 def raise_exc():109 raise exception_type()110 config_override("debug.enabled", debug_enabled)111 def test_something():112 pass113 forge.replace_with(slash.utils.debug, 'launch_debugger', checkpoint)114 with ExitStack() as exception_stack:115 if should_raise:116 exception_stack.enter_context(pytest.raises(exception_type))117 with slash.Session() as s:118 with s.get_started_context():119 slash.runner.run_tests(make_runnable_tests(test_something))120 assert checkpoint.called == debug_enabled121 if debug_enabled:122 assert checkpoint.args[0][0] is exception_type123 assert type(checkpoint.args[0][1]) is exception_type # pylint: disable=unidiomatic-typecheck124def test_before_cleanup_hook(request, forge):125 cleanup = forge.create_wildcard_function_stub(name='cleanup')126 before_cleanup_hook = forge.create_wildcard_function_stub(name='before_test_cleanup')127 test_end_hook = forge.create_wildcard_function_stub(name='test_end')128 gossip.register(before_cleanup_hook, 'slash.before_test_cleanups')129 gossip.register(test_end_hook, 'slash.test_end')130 before_cleanup_hook()131 cleanup()132 test_end_hook()133 forge.replay()134 def test_something():135 slash.add_cleanup(cleanup)136 with slash.Session() as s:137 with s.get_started_context():138 slash.runner.run_tests(make_runnable_tests(test_something))139def test_session_end_not_called_when_before_session_start_fails(checkpoint):140 @gossip.register('slash.before_session_start')141 def before_start_hook():142 raise CustomException()143 @gossip.register('slash.session_end')144 def hook():145 checkpoint()146 with slash.Session() as s:147 with pytest.raises(CustomException):148 with s.get_started_context():149 pass150 [err] = s.results.global_result.get_errors() # pylint: disable=unbalanced-tuple-unpacking151 assert 'CustomException' in str(err)152 assert not checkpoint.called153#### Older tests below, need modernizing ####154class HookCallingTest(_TestCase):155 def setUp(self):156 super(HookCallingTest, self).setUp()157 self.plugin1 = make_custom_plugin("plugin1", self)158 self.plugin2 = make_custom_plugin("plugin2", self, hook_names=["before_session_start", "session_start", "after_session_start"])159 self.addCleanup(plugins.manager.uninstall, self.plugin1)160 self.addCleanup(plugins.manager.uninstall, self.plugin2)161 def test_hook_calling_order(self):162 # pylint: disable=no-member163 # expect:164 with self.forge.any_order():165 self.plugin1.activate()166 self.plugin2.activate()167 with self.forge.any_order():168 self.plugin1.before_session_start()169 self.plugin2.before_session_start()170 with self.forge.any_order():171 self.plugin1.session_start()172 self.plugin2.session_start()173 with self.forge.any_order():174 self.plugin1.after_session_start()175 self.plugin2.after_session_start()176 self.plugin1.session_end()177 self.plugin1.after_session_end()178 self.forge.replay()179 # get:180 plugins.manager.install(self.plugin1, activate=True)181 plugins.manager.install(self.plugin2, activate=True)182 with slash.Session() as s:183 with s.get_started_context():184 pass185def make_custom_plugin(name, test, hook_names=None):186 class CustomPlugin(PluginInterface):187 def get_name(self):188 return name189 CustomPlugin.__name__ = name190 if hook_names is None:191 with vintage.get_no_deprecations_context():192 hook_names = [hook_name for hook_name, _ in slash.hooks.get_all_hooks()]193 for hook_name in hook_names:194 setattr(CustomPlugin, hook_name, test.forge.create_wildcard_function_stub(name=hook_name))195 setattr(CustomPlugin, "activate", test.forge.create_wildcard_function_stub(name="activate"))...
test_fixtures.py
Source:test_fixtures.py
1import pytest2import operator3from functools import reduce4def test_fixtures(suite, suite_test, defined_fixture):5 suite_test.depend_on_fixture(defined_fixture)6 suite.run()7def test_fixture_cleanup_at_end_of_suite(suite):8 fixture = suite.slashconf.add_fixture()9 suite[-1].depend_on_fixture(fixture)10 cleanup = fixture.add_cleanup()11 summary = suite.run()12 assert cleanup in summary.events13def test_fixture_cleanup_failure_fails_test(suite, suite_test, defined_fixture):14 suite_test.depend_on_fixture(defined_fixture)15 defined_fixture.add_cleanup(extra_code=['raise Exception()'])16 suite_test.expect_error()17 suite.run()18def test_fixture_parameters(suite, suite_test, defined_fixture):19 defined_fixture.add_parameter()20 suite_test.depend_on_fixture(defined_fixture)21 summary = suite.run()22 all_results = summary.get_all_results_for_test(suite_test)23 num_combinations = reduce(operator.mul, (len(p.values) for p in defined_fixture.get_parameters()))24 assert len(all_results) == num_combinations25def test_fixture_dependency_chain(suite, suite_test):26 fixture1 = suite.slashconf.add_fixture()27 fixture1.add_parameter()28 fixture2 = suite.slashconf.add_fixture()29 fixture2.add_parameter()30 fixture2.depend_on_fixture(fixture1)31 suite_test.depend_on_fixture(fixture2)32 suite.run()33def test_fixture_dependency_both_directly_and_indirectly(suite, suite_test):34 fixture1 = suite.slashconf.add_fixture()35 num_values1 = 236 fixture1.add_parameter(num_values=num_values1)37 fixture2 = suite.slashconf.add_fixture()38 num_values2 = 339 fixture2.add_parameter(num_values=num_values2)40 fixture2.depend_on_fixture(fixture1)41 suite_test.depend_on_fixture(fixture1)42 suite_test.depend_on_fixture(fixture2)43 summary = suite.run()44 results = summary.get_all_results_for_test(suite_test)45 assert len(results) == num_values1 * num_values246def test_fixture_context(suite, suite_test):47 fixture1 = suite.slashconf.add_fixture()48 fixture1.append_line('assert this == slash.context.fixture')49 fixture2 = suite.slashconf.add_fixture()50 fixture2.append_line('assert this == slash.context.fixture')51 fixture2.depend_on_fixture(fixture1)52 suite_test.depend_on_fixture(fixture1)53 suite.run()54@pytest.mark.parametrize('where', [['before'], ['after'], ['before', 'after']])55def test_fixtures_in_before_after(suite, where):56 test_class = suite.files[-1].add_class()57 suite_test = test_class.add_method_test()58 fixture = suite.slashconf.add_fixture()59 fixture_event = fixture.add_event(name='fixture')60 assert len(suite_test.cls.tests) == 161 before = suite_test.cls.add_before_method()62 evt1 = before.add_event(name='before')63 after = suite_test.cls.add_after_method()64 evt2 = after.add_event(name='after')65 for func in before, after:66 if func.name in where:67 func.depend_on_fixture(fixture)68 func.append_line('assert {} == {}'.format(fixture.name, fixture.get_value_string()))69 summary = suite.run()70 assert evt1 in summary.events71 assert evt2 in summary.events72 assert fixture_event in summary.events73def test_fixture_and_parameter(suite, suite_test, get_fixture_location):74 fixture = get_fixture_location(suite_test).add_fixture()75 suite_test.add_parameter()76 suite_test.depend_on_fixture(fixture)77 suite.run()78def test_fixture_which_name_startswith_test(suite):79 fixture = suite.slashconf.add_fixture(name='test_my_fixture')80 suite[-1].depend_on_fixture(fixture)81 for test in suite:82 test.expect_deselect()83 summary = suite.run(expect_session_errors=True)84 assert not summary.ok()85 for output in [summary.get_console_output(),86 str(summary.session.results.global_result.get_errors()[0])]:87 assert 'Invalid fixture name' in output88def test_fixture_with_parameters(suite_builder):89 @suite_builder.first_file.add_code90 def __code__(): # pylint: disable=unused-variable91 import slash92 @slash.fixture93 @slash.parameters.iterate(my_param=['a',])94 def fixture_1(my_param): # pylint: disable=unused-variable95 yield my_param96 @slash.parameters.iterate(my_param=['b'])97 @slash.fixture98 def fixture_2(my_param): # pylint: disable=unused-variable99 yield my_param100 def test_a(fixture_1, fixture_2): # pylint: disable=unused-variable101 assert fixture_1 == 'a'102 assert fixture_2 == 'b'...
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!