Friday, December 12, 2014

Skipping a python unittest with a custom decorator

Example custom Python unittest skip decorator:

import functools
import glob
import os

def skipIfNoYamlFiles(f):
 
@functools.wraps(f)
 
def wrapper(*args, **kwargs):
    yaml_glob
= os.path.normpath(os.path.dirname(__file__) + "/../../definitions/*.yaml")
   
if glob.glob(yaml_glob):
     
return f(*args, **kwargs)
   
else:
     
return unittest.skip("No YAML found with %s, skipping this test." % yaml_glob)
 
return wrapper
Use it like this:
class MyTests(unittest.TestCase):

 
@test_lib.skipIfNoYamlFiles
 
def testValidation(self):
   
"""Ensure all Yaml validates."""
   
print "test code goes here"

2 comments:

Anonymous said...

Great work!!!

Can you let me know what @test_lib

Unknown said...

I am using your decorator but my test is still getting executed.