diff --git a/common/clients.py b/common/clients.py
index daba708..9718d03 100644
--- a/common/clients.py
+++ b/common/clients.py
@@ -23,7 +23,8 @@
 
 
 class ClientManager(object):
-    """
+    """Provides access to the official python clients for calling various APIs.
+
     Manager that provides access to the official python clients for
     calling various OpenStack APIs.
     """
diff --git a/common/exceptions.py b/common/exceptions.py
index 5132850..b092fd0 100644
--- a/common/exceptions.py
+++ b/common/exceptions.py
@@ -12,8 +12,7 @@
 
 
 class IntegrationException(Exception):
-    """
-    Base Tempest Exception
+    """Base Tempest Exception.
 
     To correctly use this class, inherit from it and define
     a 'message' property. That message will get printf'd
diff --git a/common/remote_client.py b/common/remote_client.py
index c8c4f95..201b10f 100644
--- a/common/remote_client.py
+++ b/common/remote_client.py
@@ -88,8 +88,7 @@
         return (time.time() - self.timeout) > start_time
 
     def exec_command(self, cmd):
-        """
-        Execute the specified command on the server.
+        """Execute the specified command on the server.
 
         Note that this method is reading whole command outputs to memory, thus
         shouldn't be used for large outputs.
@@ -170,8 +169,9 @@
         return self.ssh_client.exec_command(cmd)
 
     def validate_authentication(self):
-        """Validate ssh connection and authentication
-           This method raises an Exception when the validation fails.
+        """Validate ssh connection and authentication.
+
+        This method raises an Exception when the validation fails.
         """
         self.ssh_client.test_connection_auth()
 
diff --git a/common/test.py b/common/test.py
index 4f3d923..8d8fa15 100644
--- a/common/test.py
+++ b/common/test.py
@@ -35,7 +35,8 @@
 
 
 def call_until_true(duration, sleep_for, func, *args, **kwargs):
-    """
+    """Call the function until it returns True or the duration elapsed.
+
     Call the given function until it returns True (and return True) or
     until the specified duration (in seconds) elapses (and return
     False).
@@ -281,8 +282,7 @@
     def _wait_for_stack_status(self, stack_identifier, status,
                                failure_pattern=None,
                                success_on_not_found=False):
-        """
-        Waits for a Stack to reach a given status.
+        """Waits for a Stack to reach a given status.
 
         Note this compares the full $action_$status, e.g
         CREATE_COMPLETE, not just COMPLETE which is exposed
diff --git a/functional/test_autoscaling.py b/functional/test_autoscaling.py
index 9041405..5c2d1af 100644
--- a/functional/test_autoscaling.py
+++ b/functional/test_autoscaling.py
@@ -189,7 +189,9 @@
         self.assert_instance_count(stack, 5)
 
     def test_update_group_replace(self):
-        """Make sure that during a group update the non updatable
+        """Test case for ensuring non-updatable props case a replacement.
+
+        Make sure that during a group update the non-updatable
         properties cause a replacement.
         """
         files = {'provider.yaml': self.instance_template}
@@ -219,7 +221,9 @@
         self.assertNotEqual(orig_asg_id, rsrc.physical_resource_id)
 
     def test_create_instance_error_causes_group_error(self):
-        """If a resource in an instance group fails to be created, the instance
+        """Test create failing a resource in the instance group.
+
+        If a resource in an instance group fails to be created, the instance
         group itself will fail and the broken inner resource will remain.
         """
         stack_name = self._stack_rand_name()
@@ -252,7 +256,9 @@
         self._assert_instance_state(nested_ident, 0, 2)
 
     def test_update_instance_error_causes_group_error(self):
-        """If a resource in an instance group fails to be created during an
+        """Test update failing a resource in the instance group.
+
+        If a resource in an instance group fails to be created during an
         update, the instance group itself will fail and the broken inner
         resource will remain.
         """
@@ -408,9 +414,10 @@
             self.assertNotIn(deletes_expected, updt_names)
 
     def test_instance_group_update_replace(self):
-        """
-        Test simple update replace with no conflict in batch size and
-        minimum instances in service.
+        """Test simple update replace.
+
+        Test update replace with no conflict in batch size and minimum
+        instances in service.
         """
         updt_template = self.ig_tmpl_with_updt_policy()
         grp = updt_template['Resources']['JobServerGroup']
@@ -427,9 +434,10 @@
                                    update_replace=True)
 
     def test_instance_group_update_replace_with_adjusted_capacity(self):
-        """
-        Test update replace with capacity adjustment due to conflict in
-        batch size and minimum instances in service.
+        """Test update replace with capacity adjustment.
+
+        Test update replace with capacity adjustment due to conflict in batch
+        size and minimum instances in service.
         """
         updt_template = self.ig_tmpl_with_updt_policy()
         grp = updt_template['Resources']['JobServerGroup']
@@ -446,9 +454,7 @@
                                    update_replace=True)
 
     def test_instance_group_update_replace_huge_batch_size(self):
-        """
-        Test update replace with a huge batch size.
-        """
+        """Test update replace with a huge batch size."""
         updt_template = self.ig_tmpl_with_updt_policy()
         group = updt_template['Resources']['JobServerGroup']
         policy = group['UpdatePolicy']['AutoScalingRollingUpdate']
@@ -464,9 +470,7 @@
                                    update_replace=True)
 
     def test_instance_group_update_replace_huge_min_in_service(self):
-        """
-        Test update replace with a huge number of minimum instances in service.
-        """
+        """Update replace with huge number of minimum instances in service."""
         updt_template = self.ig_tmpl_with_updt_policy()
         group = updt_template['Resources']['JobServerGroup']
         policy = group['UpdatePolicy']['AutoScalingRollingUpdate']
@@ -483,7 +487,8 @@
                                    update_replace=True)
 
     def test_instance_group_update_no_replace(self):
-        """
+        """Test simple update only and no replace.
+
         Test simple update only and no replace (i.e. updated instance flavor
         in Launch Configuration) with no conflict in batch size and
         minimum instances in service.
@@ -504,7 +509,8 @@
                                    update_replace=False)
 
     def test_instance_group_update_no_replace_with_adjusted_capacity(self):
-        """
+        """Test update only and no replace with capacity adjustment.
+
         Test update only and no replace (i.e. updated instance flavor in
         Launch Configuration) with capacity adjustment due to conflict in
         batch size and minimum instances in service.
diff --git a/functional/test_conditional_exposure.py b/functional/test_conditional_exposure.py
index d037712..90f7d7a 100644
--- a/functional/test_conditional_exposure.py
+++ b/functional/test_conditional_exposure.py
@@ -82,7 +82,7 @@
 """
 
     def test_non_admin_forbidden_create_flavors(self):
-        """Fail to create Flavor resource w/o admin role
+        """Fail to create Flavor resource w/o admin role.
 
         Integration tests job runs as normal OpenStack user,
         and OS::Nova:Flavor is configured to require
diff --git a/functional/test_create_update.py b/functional/test_create_update.py
index 4597d4c..153eb9f 100644
--- a/functional/test_create_update.py
+++ b/functional/test_create_update.py
@@ -332,7 +332,8 @@
                          self.list_resources(nested_identifier))
 
     def test_stack_update_provider_group(self):
-        '''Test two-level nested update.'''
+        """Test two-level nested update."""
+
         # Create a ResourceGroup (which creates a nested stack),
         # containing provider resources (which create a nested
         # stack), thus exercising an update which traverses
@@ -403,10 +404,12 @@
                              self.list_resources(provider_identifier))
 
     def test_stack_update_with_replacing_userdata(self):
-        """Confirm that we can update userdata of instance during updating
-        stack by the user of member role.
+        """Test case for updating userdata of instance.
 
-        Make sure that a resource that inherites from StackUser can be deleted
+        Confirm that we can update userdata of instance during updating stack
+        by the user of member role.
+
+        Make sure that a resource that inherits from StackUser can be deleted
         during updating stack.
         """
         if not self.conf.minimal_image_ref:
diff --git a/functional/test_instance_group.py b/functional/test_instance_group.py
index b8bcc3d..02a2858 100644
--- a/functional/test_instance_group.py
+++ b/functional/test_instance_group.py
@@ -131,6 +131,7 @@
 
     def test_basic_create_works(self):
         """Make sure the working case is good.
+
         Note this combines test_override_aws_ec2_instance into this test as
         well, which is:
         If AWS::EC2::Instance is overridden, InstanceGroup will automatically
@@ -177,8 +178,10 @@
         self.assert_instance_count(stack, 5)
 
     def test_update_group_replace(self):
-        """Make sure that during a group update the non updatable
-        properties cause a replacement.
+        """Test case for ensuring non-updatable props case a replacement.
+
+        Make sure that during a group update the non-updatable properties cause
+        a replacement.
         """
         files = {'provider.yaml': self.instance_template}
         env = {'resource_registry':
@@ -207,7 +210,9 @@
         self.assertNotEqual(orig_asg_id, rsrc.physical_resource_id)
 
     def test_create_instance_error_causes_group_error(self):
-        """If a resource in an instance group fails to be created, the instance
+        """Test create failing a resource in the instance group.
+
+        If a resource in an instance group fails to be created, the instance
         group itself will fail and the broken inner resource will remain.
         """
         stack_name = self._stack_rand_name()
@@ -240,7 +245,9 @@
         self._assert_instance_state(nested_ident, 0, 2)
 
     def test_update_instance_error_causes_group_error(self):
-        """If a resource in an instance group fails to be created during an
+        """Test update failing a resource in the instance group.
+
+        If a resource in an instance group fails to be created during an
         update, the instance group itself will fail and the broken inner
         resource will remain.
         """
@@ -376,7 +383,8 @@
             self.assertNotIn(deletes_expected, updt_names)
 
     def test_instance_group_update_replace(self):
-        """
+        """Test simple update replace with no conflict.
+
         Test simple update replace with no conflict in batch size and
         minimum instances in service.
         """
@@ -395,7 +403,8 @@
                                    update_replace=True)
 
     def test_instance_group_update_replace_with_adjusted_capacity(self):
-        """
+        """Test update replace with capacity adjustment.
+
         Test update replace with capacity adjustment due to conflict in
         batch size and minimum instances in service.
         """
@@ -414,9 +423,7 @@
                                    update_replace=True)
 
     def test_instance_group_update_replace_huge_batch_size(self):
-        """
-        Test update replace with a huge batch size.
-        """
+        """Test update replace with a huge batch size."""
         updt_template = self.ig_tmpl_with_updt_policy()
         group = updt_template['Resources']['JobServerGroup']
         policy = group['UpdatePolicy']['RollingUpdate']
@@ -432,9 +439,7 @@
                                    update_replace=True)
 
     def test_instance_group_update_replace_huge_min_in_service(self):
-        """
-        Test update replace with a huge number of minimum instances in service.
-        """
+        """Update replace with huge number of minimum instances in service."""
         updt_template = self.ig_tmpl_with_updt_policy()
         group = updt_template['Resources']['JobServerGroup']
         policy = group['UpdatePolicy']['RollingUpdate']
@@ -451,7 +456,8 @@
                                    update_replace=True)
 
     def test_instance_group_update_no_replace(self):
-        """
+        """Test simple update only and no replace with no conflict.
+
         Test simple update only and no replace (i.e. updated instance flavor
         in Launch Configuration) with no conflict in batch size and
         minimum instances in service.
@@ -472,7 +478,8 @@
                                    update_replace=False)
 
     def test_instance_group_update_no_replace_with_adjusted_capacity(self):
-        """
+        """Test update only and no replace with capacity adjustment.
+
         Test update only and no replace (i.e. updated instance flavor in
         Launch Configuration) with capacity adjustment due to conflict in
         batch size and minimum instances in service.
diff --git a/functional/test_resource_group.py b/functional/test_resource_group.py
index 5335245..4fd70af 100644
--- a/functional/test_resource_group.py
+++ b/functional/test_resource_group.py
@@ -267,11 +267,13 @@
         self.assertEqual(initial_rand, updated_rand)
 
     def test_update_nochange_resource_needs_update(self):
-        """Test update when the resource definition has changed."""
-        # Test the scenario when the ResourceGroup update happens without
-        # any changed properties, this can happen if the definition of
-        # a contained provider resource changes (files map changes), then
-        # the group and underlying nested stack should end up updated.
+        """Test update when the resource definition has changed.
+
+        Test the scenario when the ResourceGroup update happens without
+        any changed properties, this can happen if the definition of
+        a contained provider resource changes (files map changes), then
+        the group and underlying nested stack should end up updated.
+        """
 
         random_templ1 = '''
 heat_template_version: 2013-05-23
diff --git a/functional/test_template_resource.py b/functional/test_template_resource.py
index 9609664..dabc924 100644
--- a/functional/test_template_resource.py
+++ b/functional/test_template_resource.py
@@ -195,9 +195,12 @@
         self.assertIn('arn:openstack:heat:', test_ref)
 
     def test_transparent_ref(self):
-        """With the addition of OS::stack_id we can now use the nested resource
+        """Test using nested resource more transparently.
+
+        With the addition of OS::stack_id we can now use the nested resource
         more transparently.
         """
+
         nested_templ = '''
 heat_template_version: 2014-10-16
 resources:
@@ -520,6 +523,7 @@
 
 class TemplateResourceUpdateFailedTest(functional_base.FunctionalTestsBase):
     """Prove that we can do updates on a nested stack to fix a stack."""
+
     main_template = '''
 HeatTemplateFormatVersion: '2012-12-12'
 Resources:
@@ -688,6 +692,7 @@
 
 class TemplateResourceErrorMessageTest(functional_base.FunctionalTestsBase):
     """Prove that nested stack errors don't suck."""
+
     template = '''
 HeatTemplateFormatVersion: '2012-12-12'
 Resources:
@@ -743,7 +748,7 @@
         super(TemplateResourceSuspendResumeTest, self).setUp()
 
     def test_suspend_resume(self):
-        """Basic test for template resource suspend resume"""
+        """Basic test for template resource suspend resume."""
         stack_identifier = self.stack_create(
             template=self.main_template,
             files={'the.yaml': self.nested_templ}
@@ -755,6 +760,7 @@
 
 class ValidateFacadeTest(test.HeatIntegrationTest):
     """Prove that nested stack errors don't suck."""
+
     template = '''
 heat_template_version: 2015-10-15
 resources:
diff --git a/scenario/scenario_base.py b/scenario/scenario_base.py
index 84e14a9..14b8cec 100644
--- a/scenario/scenario_base.py
+++ b/scenario/scenario_base.py
@@ -14,7 +14,7 @@
 
 
 class ScenarioTestsBase(test.HeatIntegrationTest):
-    "This class define common parameters for scenario tests"
+    """This class defines common parameters for scenario tests."""
 
     def setUp(self):
         super(ScenarioTestsBase, self).setUp()
diff --git a/scenario/test_autoscaling_lb.py b/scenario/test_autoscaling_lb.py
index 21b27dd..1d4d41d 100644
--- a/scenario/test_autoscaling_lb.py
+++ b/scenario/test_autoscaling_lb.py
@@ -20,8 +20,7 @@
 
 
 class AutoscalingLoadBalancerTest(scenario_base.ScenarioTestsBase):
-    """
-    The class is responsible for testing ASG + LB scenario.
+    """The class is responsible for testing ASG + LB scenario.
 
     The very common use case tested is an autoscaling group
     of some web application servers behind a loadbalancer.
@@ -52,8 +51,7 @@
         return all_res and all_res_complete
 
     def test_autoscaling_loadbalancer_neutron(self):
-        """
-        Check work of AutoScaing and Neutron LBaaS resource in Heat.
+        """Check work of AutoScaing and Neutron LBaaS resource in Heat.
 
         The scenario is the following:
             1. Launch a stack with a load balancer and autoscaling group
diff --git a/scenario/test_server_cfn_init.py b/scenario/test_server_cfn_init.py
index 267b44b..d3ee7ee 100644
--- a/scenario/test_server_cfn_init.py
+++ b/scenario/test_server_cfn_init.py
@@ -17,9 +17,7 @@
 
 
 class CfnInitIntegrationTest(scenario_base.ScenarioTestsBase):
-    """
-    The class is responsible for testing cfn-init and cfn-signal workability
-    """
+    """Testing cfn-init and cfn-signal workability."""
 
     def setUp(self):
         super(CfnInitIntegrationTest, self).setUp()
@@ -94,8 +92,7 @@
                 raise e
 
     def test_server_cfn_init(self):
-        """
-        Check cfn-init and cfn-signal availability on the created server.
+        """Check cfn-init and cfn-signal availability on the created server.
 
         The alternative scenario is the following:
             1. Create a stack with a server and configured security group.
diff --git a/scenario/test_server_software_config.py b/scenario/test_server_software_config.py
index 8739a99..ad76763 100644
--- a/scenario/test_server_software_config.py
+++ b/scenario/test_server_software_config.py
@@ -133,8 +133,7 @@
                 dep1_dep.creation_time)
 
     def test_server_software_config(self):
-        """
-        Check that passed files with scripts are executed on created server.
+        """Check that passed files with scripts are executed on created server.
 
         The alternative scenario is the following:
             1. Create a stack and pass files with scripts.
diff --git a/scenario/test_volumes.py b/scenario/test_volumes.py
index d4b1aa8..7980d81 100644
--- a/scenario/test_volumes.py
+++ b/scenario/test_volumes.py
@@ -22,9 +22,7 @@
 
 
 class VolumeBackupRestoreIntegrationTest(scenario_base.ScenarioTestsBase):
-    """
-    Class is responsible for testing of volume backup.
-    """
+    """Class is responsible for testing of volume backup."""
 
     def setUp(self):
         super(VolumeBackupRestoreIntegrationTest, self).setUp()
@@ -101,8 +99,7 @@
                           volume_id2)
 
     def test_cinder_volume_create_backup_restore(self):
-        """
-        Ensure the 'Snapshot' deletion policy works.
+        """Ensure the 'Snapshot' deletion policy works.
 
         This requires a more complex test, but it tests several aspects
         of the heat cinder resources:
