From 284aeae6890c455c43ea8e841db9f8d1f3cf46e2 Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Tue, 18 Apr 2017 09:39:52 +0200 Subject: Add docstings in feature.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It also modifies the testcase module docstring. Now features.py is rated 10/10 by pylint. Change-Id: I83f2ac385b2a713d116c1ae4b49ba9cc9b26a83c Signed-off-by: Cédric Ollivier --- functest/core/feature.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++ functest/core/testcase.py | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) (limited to 'functest/core') diff --git a/functest/core/feature.py b/functest/core/feature.py index 4d48a06cf..00c7ec74c 100644 --- a/functest/core/feature.py +++ b/functest/core/feature.py @@ -7,6 +7,12 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 +"""Define the parent class of all Functest Features. + +Feature is considered as TestCase offered by Third-party. It offers +helpers to run any python method or any bash command. +""" + import time import functest.core.testcase as base @@ -14,8 +20,12 @@ import functest.utils.functest_utils as ft_utils import functest.utils.functest_logger as ft_logger from functest.utils.constants import CONST +__author__ = ("Serena Feng , " + "Cedric Ollivier ") + class Feature(base.TestCase): + """Parent class of Functest Feature.""" def __init__(self, **kwargs): super(Feature, self).__init__(**kwargs) @@ -24,10 +34,42 @@ class Feature(base.TestCase): self.logger = ft_logger.Logger(self.project_name).getLogger() def execute(self, **kwargs): + """Execute Feature. + + The subclasses must override the default implementation which + is false on purpose. The only prerequisite is to return 0 if + success or anything else if failure. + + Args: + kwargs: Arbitrary keyword arguments. + + Returns: + -1. + """ # pylint: disable=unused-argument,no-self-use return -1 def run(self, **kwargs): + """Run Feature. + + It allows executing any Python method by calling execute(). + + It sets the following attributes required to push the results + to DB: + + * criteria, + * start_time, + * stop_time. + + It doesn't fulfill details when pushing the results to the DB. + + Args: + kwargs: Arbitrary keyword arguments. + + Returns: + TestCase.EX_OK if execute() returns 0, + TestCase.EX_RUN_ERROR otherwise. + """ self.start_time = time.time() exit_code = base.TestCase.EX_RUN_ERROR self.criteria = "FAIL" @@ -47,8 +89,18 @@ class Feature(base.TestCase): class BashFeature(Feature): + """Class designed to run any bash command.""" def execute(self, **kwargs): + """Execute the cmd passed as arg + + Args: + kwargs: Arbitrary keyword arguments. + + Returns: + 0 if cmd returns 0, + -1 otherwise. + """ ret = -1 try: cmd = kwargs["cmd"] diff --git a/functest/core/testcase.py b/functest/core/testcase.py index b675a482f..472d847ab 100644 --- a/functest/core/testcase.py +++ b/functest/core/testcase.py @@ -7,7 +7,7 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 -"""Define the parent class of Functest TestCase.""" +"""Define the parent class of all Functest TestCases.""" import os -- cgit 1.2.3-korg