Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pytest
- from _pytest.mark import MarkDecorator
- class TestValue(list):
- def __init__(self, id='', fixtures=None, params=None):
- self._id = id
- self._fixtures = fixtures or {}
- self._params = params or {}
- super(TestValue, self).__init__(
- self._fixtures.values() + self._params.values())
- def __repr__(self):
- return self._id
- def id(self, id):
- self._id = id
- return self
- def fixtures(self, **fixtures):
- return type(self)(self._id, fixtures, self._params)
- def params(self, **params):
- return type(self)(self._id, self._fixtures, params)
- @property
- def fixture_names(self):
- return self._fixtures.keys()
- @property
- def param_names(self):
- return self._params.keys()
- @property
- def all_names(self):
- return self.fixture_names + self.param_names
- def parametrize(*values):
- def get_pure_value(value):
- if isinstance(value, MarkDecorator):
- return get_pure_value(value.args[-1])
- return value
- pure_values = map(get_pure_value, values)
- all_names = pure_values[0].all_names
- fixture_names = pure_values[0].fixture_names
- ids = map(repr, pure_values)
- return pytest.mark.parametrize(all_names, values,
- ids=ids, indirect=fixture_names)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement