Best Python code snippet using autotest_python
subcommand_unittest.py
Source:subcommand_unittest.py  
...56        self.god.check_playback()57    def _setup_fork_start_parent(self):58        self.god.stub_function(subcommand.os, 'fork')59        subcommand.os.fork.expect_call().and_return(1000)60        func = self.god.create_mock_function('func')61        cmd = _create_subcommand(func, [])62        cmd.fork_start()63        return cmd64    def test_fork_start_parent(self):65        cmd = self._setup_fork_start_parent()66        self.assertEquals(cmd.pid, 1000)67        self.god.check_playback()68    def _setup_fork_start_child(self):69        self.god.stub_function(subcommand.os, 'pipe')70        self.god.stub_function(subcommand.os, 'fork')71        self.god.stub_function(subcommand.os, 'close')72        self.god.stub_function(subcommand.os, 'write')73        self.god.stub_function(subcommand.cPickle, 'dumps')74        self.god.stub_function(subcommand.os, '_exit')75    def test_fork_start_child(self):76        self._setup_fork_start_child()77        func = self.god.create_mock_function('func')78        fork_hook = self.god.create_mock_function('fork_hook')79        join_hook = self.god.create_mock_function('join_hook')80        subcommand.subcommand.register_fork_hook(fork_hook)81        subcommand.subcommand.register_join_hook(join_hook)82        cmd = _create_subcommand(func, (1, 2))83        subcommand.os.pipe.expect_call().and_return((10, 20))84        subcommand.os.fork.expect_call().and_return(0)85        subcommand.os.close.expect_call(10)86        fork_hook.expect_call(cmd)87        func.expect_call(1, 2).and_return(True)88        subcommand.cPickle.dumps.expect_call(True,89                subcommand.cPickle.HIGHEST_PROTOCOL).and_return('True')90        subcommand.os.write.expect_call(20, 'True')91        subcommand.os.close.expect_call(20)92        join_hook.expect_call(cmd)93        subcommand.os._exit.expect_call(0)94        cmd.fork_start()95        self.god.check_playback()96    def test_fork_start_child_error(self):97        self._setup_fork_start_child()98        self.god.stub_function(subcommand.logging, 'exception')99        func = self.god.create_mock_function('func')100        cmd = _create_subcommand(func, (1, 2))101        error = Exception('some error')102        subcommand.os.pipe.expect_call().and_return((10, 20))103        subcommand.os.fork.expect_call().and_return(0)104        subcommand.os.close.expect_call(10)105        func.expect_call(1, 2).and_raises(error)106        subcommand.logging.exception.expect_call('function failed')107        subcommand.cPickle.dumps.expect_call(error,108                subcommand.cPickle.HIGHEST_PROTOCOL).and_return('error')109        subcommand.os.write.expect_call(20, 'error')110        subcommand.os.close.expect_call(20)111        subcommand.os._exit.expect_call(1)112        cmd.fork_start()113        self.god.check_playback()114    def _setup_poll(self):115        cmd = self._setup_fork_start_parent()116        self.god.stub_function(subcommand.os, 'waitpid')117        return cmd118    def test_poll_running(self):119        cmd = self._setup_poll()120        (subcommand.os.waitpid.expect_call(1000, subcommand.os.WNOHANG)121                .and_raises(subcommand.os.error('waitpid')))122        self.assertEquals(cmd.poll(), None)123        self.god.check_playback()124    def test_poll_finished_success(self):125        cmd = self._setup_poll()126        (subcommand.os.waitpid.expect_call(1000, subcommand.os.WNOHANG)127                .and_return((1000, 0)))128        self.assertEquals(cmd.poll(), 0)129        self.god.check_playback()130    def test_poll_finished_failure(self):131        cmd = self._setup_poll()132        self.god.stub_function(cmd, '_handle_exitstatus')133        (subcommand.os.waitpid.expect_call(1000, subcommand.os.WNOHANG)134                .and_return((1000, 10)))135        cmd._handle_exitstatus.expect_call(10).and_raises(Exception('fail'))136        self.assertRaises(Exception, cmd.poll)137        self.god.check_playback()138    def test_wait_success(self):139        cmd = self._setup_poll()140        (subcommand.os.waitpid.expect_call(1000, 0)141                .and_return((1000, 0)))142        self.assertEquals(cmd.wait(), 0)143        self.god.check_playback()144    def test_wait_failure(self):145        cmd = self._setup_poll()146        self.god.stub_function(cmd, '_handle_exitstatus')147        (subcommand.os.waitpid.expect_call(1000, 0)148                .and_return((1000, 10)))149        cmd._handle_exitstatus.expect_call(10).and_raises(Exception('fail'))150        self.assertRaises(Exception, cmd.wait)151        self.god.check_playback()152class real_subcommand_test(unittest.TestCase):153    """Test actually running subcommands (without mocking)."""154    def _setup_subcommand(self, func, *args):155        cmd = subcommand.subcommand(func, args)156        cmd.fork_start()157        return cmd158    def test_fork_waitfor_no_timeout(self):159        """Test fork_waitfor success with no timeout."""160        cmd = self._setup_subcommand(lambda: None)161        self.assertEquals(cmd.fork_waitfor(), 0)162    def test_fork_waitfor_timeout(self):163        """Test fork_waitfor success with a timeout."""164        cmd = self._setup_subcommand(lambda: None)165        self.assertEquals(cmd.fork_waitfor(timeout=60), 0)166    def test_fork_waitfor_exception(self):167        """Test fork_waitfor failure with an exception."""168        cmd = self._setup_subcommand(lambda: None, 'foo')169        with self.assertRaises(error.AutoservSubcommandError):170          cmd.fork_waitfor(timeout=60)171    def test_fork_waitfor_timeout_fail(self):172        """Test fork_waitfor timing out."""173        cmd = self._setup_subcommand(lambda: time.sleep(60))174        with self.assertRaises(error.AutoservSubcommandError):175          cmd.fork_waitfor(timeout=1)176class parallel_test(unittest.TestCase):177    def setUp(self):178        self.god = mock.mock_god()179        self.god.stub_function(subcommand.cPickle, 'load')180    def tearDown(self):181        self.god.unstub_all()182    def _get_cmd(self, func, args):183        cmd = _create_subcommand(func, args)184        cmd.result_pickle = self.god.create_mock_class(file, 'file')185        return self.god.create_mock_class(cmd, 'subcommand')186    def _get_tasklist(self):187        return [self._get_cmd(lambda x: x * 2, (3,)),188                self._get_cmd(lambda: None, [])]189    def _setup_common(self):190        tasklist = self._get_tasklist()191        for task in tasklist:192            task.fork_start.expect_call()193        return tasklist194    def test_success(self):195        tasklist = self._setup_common()196        for task in tasklist:197            task.fork_waitfor.expect_call(timeout=None).and_return(0)198            (subcommand.cPickle.load.expect_call(task.result_pickle)199                    .and_return(6))200            task.result_pickle.close.expect_call()201        subcommand.parallel(tasklist)202        self.god.check_playback()203    def test_failure(self):204        tasklist = self._setup_common()205        for task in tasklist:206            task.fork_waitfor.expect_call(timeout=None).and_return(1)207            (subcommand.cPickle.load.expect_call(task.result_pickle)208                    .and_return(6))209            task.result_pickle.close.expect_call()210        self.assertRaises(subcommand.error.AutoservError, subcommand.parallel,211                          tasklist)212        self.god.check_playback()213    def test_timeout(self):214        self.god.stub_function(subcommand.time, 'time')215        tasklist = self._setup_common()216        timeout = 10217        subcommand.time.time.expect_call().and_return(1)218        for task in tasklist:219            subcommand.time.time.expect_call().and_return(1)220            task.fork_waitfor.expect_call(timeout=timeout).and_return(None)221            (subcommand.cPickle.load.expect_call(task.result_pickle)222                    .and_return(6))223            task.result_pickle.close.expect_call()224        self.assertRaises(subcommand.error.AutoservError, subcommand.parallel,225                          tasklist, timeout=timeout)226        self.god.check_playback()227    def test_return_results(self):228        tasklist = self._setup_common()229        tasklist[0].fork_waitfor.expect_call(timeout=None).and_return(0)230        (subcommand.cPickle.load.expect_call(tasklist[0].result_pickle)231                .and_return(6))232        tasklist[0].result_pickle.close.expect_call()233        error = Exception('fail')234        tasklist[1].fork_waitfor.expect_call(timeout=None).and_return(1)235        (subcommand.cPickle.load.expect_call(tasklist[1].result_pickle)236                .and_return(error))237        tasklist[1].result_pickle.close.expect_call()238        self.assertEquals(subcommand.parallel(tasklist, return_results=True),239                          [6, error])240        self.god.check_playback()241class test_parallel_simple(unittest.TestCase):242    def setUp(self):243        self.god = mock.mock_god()244        self.god.stub_function(subcommand, 'parallel')245        ctor = self.god.create_mock_function('subcommand')246        self.god.stub_with(subcommand, 'subcommand', ctor)247    def tearDown(self):248        self.god.unstub_all()249    def test_simple_success(self):250        func = self.god.create_mock_function('func')251        func.expect_call(3)252        subcommand.parallel_simple(func, (3,))253        self.god.check_playback()254    def test_simple_failure(self):255        func = self.god.create_mock_function('func')256        error = Exception('fail')257        func.expect_call(3).and_raises(error)258        self.assertRaises(Exception, subcommand.parallel_simple, func, (3,))259        self.god.check_playback()260    def test_simple_return_value(self):261        func = self.god.create_mock_function('func')262        result = 1000263        func.expect_call(3).and_return(result)264        self.assertEquals(subcommand.parallel_simple(func, (3,),265                                                     return_results=True),266                          [result])267        self.god.check_playback()268    def test_default_subdirs_constructor(self):269        func = self.god.create_mock_function('func')270        args = range(4)271        for arg in args:272            subcommand.subcommand.expect_call(273                    func, [arg], str(arg)).and_return(arg)274        subcommand.parallel.expect_call(args, None, return_results=False)275        subcommand.parallel_simple(func, args)276        self.god.check_playback()277    def test_nolog_skips_subdirs(self):278        func = self.god.create_mock_function('func')279        args = range(3)280        for arg in args:281            subcommand.subcommand.expect_call(282                    func, [arg], None).and_return(arg)283        subcommand.parallel.expect_call(args, None, return_results=False)284        subcommand.parallel_simple(func, args, log=False)285        self.god.check_playback()286    def test_custom_subdirs_constructor(self):287        func = self.god.create_mock_function('func')288        args = range(7)289        subdirs = ['subdir%s' % arg for arg in args]290        for arg, subdir in zip(args, subdirs):291            subcommand.subcommand.expect_call(292                    func, [arg], subdir).and_return(arg)293        subcommand.parallel.expect_call(args, None, return_results=False)294        subcommand.parallel_simple(295                func, args, subdir_name_constructor=lambda x: 'subdir%s' % x)296        self.god.check_playback()297if __name__ == '__main__':...channel_test.py
Source:channel_test.py  
...10        self.client = Mock(spec_set=Client)11        self.channel_id = ChannelId('/test')12        self.channel = Channel(self.client, self.channel_id)13        self.mock_message = Message(data='dummy')14    def create_mock_function(self, name='mock', **kwargs):15        mock = Mock(**kwargs)16        mock.__name__ = name17        return mock18    def test_repr(self):19        assert repr(self.channel) == self.channel_id20    def test_channel_id(self):21        assert self.channel.channel_id is self.channel_id22    def test_is_meta(self):23        assert not self.channel.is_meta24        channel = Channel(self.client, ChannelId.META_HANDSHAKE)25        assert channel.is_meta26    def test_is_wild(self):27        assert not self.channel.is_wild28        channel = Channel(self.client, '/test/*')29        assert channel.is_wild30        channel = Channel(self.client, '/*')31        assert channel.is_wild32        channel = Channel(self.client, '/test/**')33        assert not channel.is_wild34        channel = Channel(self.client, '*')35        assert not channel.is_wild36    def test_is_wild_deep(self):37        assert not self.channel.is_wild_deep38        channel = Channel(self.client, '/test/**')39        assert channel.is_wild_deep40        channel = Channel(self.client, '/**')41        assert channel.is_wild_deep42        channel = Channel(self.client, '/*')43        assert not channel.is_wild_deep44        channel = Channel(self.client, '**')45        assert not channel.is_wild_deep46    def test_parts(self):47        assert self.channel.parts == ['test']48        channel = Channel(self.client, '/test/some/channel')49        assert channel.parts == ['test', 'some', 'channel']50        channel = Channel(self.client, '')51        assert channel.parts == []52    def test_has_subscriptions(self):53        assert not self.channel.has_subscriptions54        mock_listener = self.create_mock_function()55        self.channel.add_listener(mock_listener)56        assert not self.channel.has_subscriptions57        mock_subscription = self.create_mock_function()58        self.channel.subscribe(mock_subscription)59        assert self.channel.has_subscriptions60        assert self.channel.remove_listener(function=mock_listener)61        assert self.channel.has_subscriptions62        assert self.channel.unsubscribe(function=mock_subscription)63        assert not self.channel.has_subscriptions64    def test_add_listener(self):65        mock_listener = self.create_mock_function()66        listener_id = self.channel.add_listener(mock_listener, 1, foo='bar')67        assert not mock_listener.called68        self.channel.notify_listeners(self.channel, self.mock_message)69        mock_listener.assert_called_once_with(self.channel, self.mock_message, 1, foo='bar')70        assert self.channel.remove_listener(id=listener_id)71    def test_clear_listeners(self):72        self.channel.clear_listeners()73        mock_listener = self.create_mock_function()74        mock_subscription = self.create_mock_function()75        listener_id = self.channel.add_listener(mock_listener)76        self.channel.subscribe(mock_subscription)77        self.channel.clear_listeners()78        assert not self.channel.remove_listener(id=listener_id)79        self.channel.notify_listeners(self.channel, self.mock_message)80        assert not mock_listener.called81        mock_subscription.assert_called_once_with(self.channel, self.mock_message)82    def test_clear_subscriptions(self):83        self.channel.clear_subscriptions()84        mock_listener = self.create_mock_function()85        mock_subscription = self.create_mock_function()86        self.channel.add_listener(mock_listener)87        subscription_id = self.channel.subscribe(mock_subscription)88        self.channel.clear_subscriptions()89        assert not self.channel.unsubscribe(id=subscription_id)90        self.channel.notify_listeners(self.channel, self.mock_message)91        mock_listener.assert_called_once_with(self.channel, self.mock_message)92        assert not mock_subscription.called93    def test_get_wilds(self):94        channel = Channel(self.client, '/test/some/channel')95        assert channel.get_wilds() == [96            '/test/some/*',97            '/test/some/**',98            '/test/**',99            '/**'100        ]101        channel = Channel(self.client, '/')102        assert channel.get_wilds() == [103            '/*',104            '/**'105        ]106        channel = Channel(self.client, '')107        assert channel.get_wilds() == []108    def test_notify_listeners(self):109        mock_listener = self.create_mock_function()110        mock_subscription_1 = self.create_mock_function()111        mock_subscription_2 = self.create_mock_function(side_effect=Exception())112        mock_subscription_3 = self.create_mock_function()113        self.channel.add_listener(mock_listener, 1, foo='bar1')114        self.channel.subscribe(mock_subscription_1, 2, foo='bar2')115        subscription_id = self.channel.subscribe(mock_subscription_2, 3)116        self.channel.subscribe(mock_subscription_3, foo='bar4')117        self.channel.notify_listeners(self.channel, self.mock_message)118        mock_listener.assert_called_once_with(self.channel, self.mock_message, 1, foo='bar1')119        mock_subscription_1.assert_called_once_with(self.channel, self.mock_message, 2, foo='bar2')120        mock_subscription_2.assert_called_once_with(self.channel, self.mock_message, 3)121        mock_subscription_3.assert_called_once_with(self.channel, self.mock_message, foo='bar4')122        self.client.fire.assert_called_once_with(123            self.client.EVENT_LISTENER_EXCEPTION,124            Listener(125                id=subscription_id,126                function=mock_subscription_2,127                extra_args=(3,),128                extra_kwargs={}129            ),130            self.mock_message,131            mock_subscription_2.side_effect132        )133    def test_notify_listeners_without_data(self):134        mock_listener = self.create_mock_function()135        mock_subscription = self.create_mock_function()136        self.mock_message.data = None137        self.channel.add_listener(mock_listener)138        self.channel.subscribe(mock_subscription)139        self.channel.notify_listeners(self.channel, self.mock_message)140        mock_listener.assert_called_once_with(self.channel, self.mock_message)141        assert not mock_subscription.called142    def test_notify_listeners_with_other_channel(self):143        mock_listener = self.create_mock_function()144        mock_subscription = self.create_mock_function()145        other_channel = Channel(self.client, '/other')146        self.channel.add_listener(mock_listener)147        self.channel.subscribe(mock_subscription)148        self.channel.notify_listeners(other_channel, self.mock_message)149        mock_listener.assert_called_once_with(other_channel, self.mock_message)150        mock_subscription.assert_called_once_with(other_channel, self.mock_message)151    def test_publish(self):152        self.channel.publish('dummy')153        self.client.send.assert_called_once_with({154            'channel': '/test',155            'data': 'dummy'156        })157        self.channel.publish('dummy', properties={'id': '1'})158        self.client.send.assert_called_with({159            'channel': '/test',160            'data': 'dummy',161            'id': '1'162        })163    def test_remove_listener(self):164        # Add a listener165        mock_listener = self.create_mock_function()166        listener_id = self.channel.add_listener(mock_listener)167        # Check validation of optional arguments168        self.assertRaises(ValueError, self.channel.remove_listener)169        self.assertRaises(ValueError, self.channel.remove_listener, id=listener_id, function=mock_listener)170        # Make sure non-matches are handled correctly171        assert not self.channel.remove_listener(id=listener_id - 1)172        assert not self.channel.remove_listener(function=self.create_mock_function())173        # Test removal by ID174        assert self.channel.remove_listener(id=listener_id)175        self.channel.notify_listeners(self.channel, self.mock_message)176        assert not mock_listener.called177        # Test removal by function178        mock_listener_2 = self.create_mock_function()179        self.channel.add_listener(mock_listener)180        self.channel.add_listener(mock_listener_2)181        self.channel.add_listener(mock_listener)182        self.channel.notify_listeners(self.channel, self.mock_message)183        assert mock_listener.call_count == 2184        assert mock_listener_2.call_count == 1185        assert self.channel.remove_listener(function=mock_listener)186        self.channel.notify_listeners(self.channel, self.mock_message)187        assert mock_listener.call_count == 2188        assert mock_listener_2.call_count == 2189    def test_subscribe(self):190        mock_subscription = self.create_mock_function()191        subscription_id = self.channel.subscribe(mock_subscription, 1, foo='bar')192        self.client.send.assert_called_once_with({193            'channel': ChannelId.META_SUBSCRIBE,194            'subscription': self.channel_id195        })196        self.channel.subscribe(mock_subscription)197        assert self.client.send.call_count == 1198        self.channel.notify_listeners(self.channel, self.mock_message)199        assert mock_subscription.call_args_list == [200            ((self.channel, self.mock_message, 1), {'foo': 'bar'}),201            ((self.channel, self.mock_message),)202        ]203        assert self.channel.unsubscribe(id=subscription_id)204        assert self.channel.unsubscribe(function=mock_subscription)205    def test_subscribe_with_properties(self):206        mock_subscription = self.create_mock_function()207        self.channel.subscribe(mock_subscription, 1, foo='bar', properties={'id': '1'})208        self.client.send.assert_called_once_with({209            'channel': ChannelId.META_SUBSCRIBE,210            'subscription': self.channel_id,211            'id': '1'212        })213        self.channel.notify_listeners(self.channel, self.mock_message)214        mock_subscription.assert_called_once_with(self.channel, self.mock_message, 1, foo='bar')215    def test_unsubscribe(self):216        mock_subscription = self.create_mock_function()217        subscription_id = self.channel.subscribe(mock_subscription)218        self.client.send.reset_mock()219        self.assertRaises(ValueError, self.channel.unsubscribe)220        self.assertRaises(ValueError, self.channel.unsubscribe, id=subscription_id, function=mock_subscription)221        assert not self.channel.unsubscribe(id=subscription_id - 1)222        assert not self.channel.unsubscribe(function=self.create_mock_function())223        assert self.channel.unsubscribe(id=subscription_id)224        self.client.send.assert_called_once_with({225            'channel': ChannelId.META_UNSUBSCRIBE,226            'subscription': self.channel_id227        })228        self.channel.notify_listeners(self.channel, self.mock_message)229        assert not mock_subscription.called230        self.channel.subscribe(mock_subscription)231        self.channel.subscribe(mock_subscription)232        self.client.send.reset_mock()233        self.channel.notify_listeners(self.channel, self.mock_message)234        assert mock_subscription.call_count == 2235        assert self.channel.unsubscribe(function=mock_subscription)236        assert self.client.send.call_count == 1237        self.channel.notify_listeners(self.channel, self.mock_message)238        assert mock_subscription.call_count == 2239    def test_unsubscribe_with_properties(self):240        mock_subscription = self.create_mock_function()241        self.channel.subscribe(mock_subscription)242        self.client.send.reset_mock()243        assert self.channel.unsubscribe(function=mock_subscription, properties={'id': '1'})244        self.client.send.assert_called_once_with({245            'channel': ChannelId.META_UNSUBSCRIBE,246            'subscription': self.channel_id,247            'id': '1'248        })249        self.channel.notify_listeners(self.channel, self.mock_message)...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!!
