You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 11, 2020. It is now read-only.
This plugin supports testing of a cmd2 application by exposing access cmd2 commands with the same context
as from within a cmd2 pyscript. This allows for verification of an application's support for pyscripts.
Example cmd2 Application
The following short example shows how to mix in the external test plugin to create a fixture for testing
your cmd2 application.
Define your cmd2 application
importcmd2classExampleApp(cmd2.Cmd):
"""An class to show how to use a plugin"""def__init__(self, *args, **kwargs):
# gotta have this or neither the plugin or cmd2 will initializesuper().__init__(*args, **kwargs)
defdo_something(self, arg):
self.last_result=5self.poutput('this is the something command')
Defining the test fixture
In your test, define a fixture for your cmd2 application
importcmd2_ext_testimportpytestclassExampleAppTester(cmd2_ext_test.ExternalTestMixin, ExampleApp):
def__init__(self, *args, **kwargs):
# gotta have this or neither the plugin or cmd2 will initializesuper().__init__(*args, **kwargs)
@pytest.fixturedefexample_app():
app=ExampleAppTester()
app.fixture_setup()
yieldappapp.fixture_teardown()
Writing Tests
Now write your tests that validate your application using the app_cmd function to access
the cmd2 application's commands. This allows invocation of the application's commands in the
same format as a user would type. The results from calling a command matches what is returned
from running an python script with cmd2's pyscript command, which provides stdout, stderr, and
the command's result data.
fromcmd2importCommandResultdeftest_something(example_app):
# execute a commandout=example_app.app_cmd("something")
# validate the command output and result dataassertisinstance(out, CommandResult)
assertstr(out.stdout).strip() =='this is the something command'assertout.data==5