Plugin Development
If you are not using JIRA, Behave, and/or the OS keyring, you can use third-party plugins or create your own plugins to customize the functionality of QualiPy. QualiPy supports plugins for project management, authentication, and testing. Out of the box, QualiPy has a plugin for JIRA for project management, keyring authentication, and Behave for testing.
In order to create plugins, simply create a class that implements the methods of the appropriate parent class and update the corresponding setting in your configuration (see settings). See the below for the functionality to be implemented.
Project Management Plugin
Associated setting (project.management.plugin)
# qualipy.proj_mgmt_plugins.proj_mgmt_plugin
class ProjMgmtPlugin:
def __init__(self, **kwargs):
self._authenticator = kwargs.get('authenticator', None)
self._config = kwargs.get('config', {})
self._testing_type = self._config.get(
'testing.type', TESTING_TYPE_REGRESSION)
self._use_access_token = self._config.get('use.access.token', True)
self._upload_test_results = self._config.get('upload.test.results', True)
@abc.abstractmethod
def export_feature_files(self):
raise NotImplementedError()
@abc.abstractmethod
def move_user_stories(self):
raise NotImplementedError()
@abc.abstractmethod
def upload_test_results(self, test_results_file):
raise NotImplementedError()
Authentication Plugin
Associated setting (project.management.authenticator.class)
# qualipy.authentication.authenticator
class Authenticator:
def __init__(self, **kwargs):
pass
@abc.abstractmethod
def get_username(self):
raise NotImplementedError()
@abc.abstractmethod
def get_password(self):
raise NotImplementedError()
@abc.abstractmethod
def get_api_key(self):
raise NotImplementedError()
@abc.abstractmethod
def get_certificate(self):
raise NotImplementedError()
Testing Plugin
Associated setting (test.plugin)
# qualipy.test_plugins.test_plugin
class TestPlugin(abc.ABC):
def __init__(self, config: AppConfig):
self._config = config
@abc.abstractmethod
def execute(self):
raise NotImplementedError()
@abc.abstractproperty
def test_results_file(self):
raise NotImplementedError()