comparison test/pytest_patcher.py @ 5109:43a1f7fe39f5

Improved work-around for pytest markers bug The previous fix was only a partial solution. Any test class sharing a parent with, and appearing after, a skipped test class was being skipped (not just other test classes using the skip/skipif marker). Now only tests that should be skipped will be skipped, the rest should run as normal.
author John Kristensen <john@jerrykan.com>
date Tue, 28 Jun 2016 15:39:38 +1000
parents
children 1c94afabb2cb
comparison
equal deleted inserted replaced
5108:67fad01d2009 5109:43a1f7fe39f5
1 """
2 The following code was taken from:
3
4 https://github.com/pytest-dev/pytest/issues/568#issuecomment-216569420
5
6 to resolve a bug with using pytest.mark.skip(). Once the bug is resolved in
7 pytest this file can be removed along with all the wrapper mark_class()
8 references in the other test files.
9 """
10 import types
11
12
13 def mark_class(marker):
14 '''Workaround for https://github.com/pytest-dev/pytest/issues/568'''
15 def copy_func(f):
16 try:
17 return types.FunctionType(f.__code__, f.__globals__,
18 name=f.__name__, argdefs=f.__defaults__,
19 closure=f.__closure__)
20 except AttributeError:
21 return types.FunctionType(f.func_code, f.func_globals,
22 name=f.func_name,
23 argdefs=f.func_defaults,
24 closure=f.func_closure)
25
26 def mark(cls):
27 for method in dir(cls):
28 if method.startswith('test_'):
29 f = copy_func(getattr(cls, method))
30 setattr(cls, method, marker(f))
31 return cls
32 return mark

Roundup Issue Tracker: http://roundup-tracker.org/