Advertisement
Guest User

Untitled

a guest
Feb 6th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. import pytest
  2. from _pytest.mark import MarkDecorator
  3.  
  4.  
  5. class TestValue(list):
  6.  
  7. def __init__(self, id='', fixtures=None, params=None):
  8. self._id = id
  9. self._fixtures = fixtures or {}
  10. self._params = params or {}
  11.  
  12. super(TestValue, self).__init__(
  13. self._fixtures.values() + self._params.values())
  14.  
  15. def __repr__(self):
  16. return self._id
  17.  
  18. def id(self, id):
  19. self._id = id
  20. return self
  21.  
  22. def fixtures(self, **fixtures):
  23. return type(self)(self._id, fixtures, self._params)
  24.  
  25. def params(self, **params):
  26. return type(self)(self._id, self._fixtures, params)
  27.  
  28. @property
  29. def fixture_names(self):
  30. return self._fixtures.keys()
  31.  
  32. @property
  33. def param_names(self):
  34. return self._params.keys()
  35.  
  36. @property
  37. def all_names(self):
  38. return self.fixture_names + self.param_names
  39.  
  40.  
  41. def parametrize(*values):
  42.  
  43. def get_pure_value(value):
  44. if isinstance(value, MarkDecorator):
  45. return get_pure_value(value.args[-1])
  46. return value
  47.  
  48. pure_values = map(get_pure_value, values)
  49. all_names = pure_values[0].all_names
  50. fixture_names = pure_values[0].fixture_names
  51. ids = map(repr, pure_values)
  52.  
  53. return pytest.mark.parametrize(all_names, values,
  54. ids=ids, indirect=fixture_names)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement