|
7 | 7 | import time |
8 | 8 |
|
9 | 9 | from .feature import force_unicode |
10 | | -from .utils import get_parametrize_markers_args |
| 10 | +from .utils import get_parametrize_markers_args, get_parametrize_params |
11 | 11 |
|
12 | 12 |
|
13 | 13 | class StepReport(object): |
@@ -73,20 +73,30 @@ def __init__(self, scenario, node): |
73 | 73 | """ |
74 | 74 | self.scenario = scenario |
75 | 75 | self.step_reports = [] |
76 | | - self.param_index = None |
| 76 | + |
77 | 77 | parametrize_args = get_parametrize_markers_args(node) |
78 | | - if parametrize_args and scenario.examples: |
79 | | - param_names = parametrize_args[0] if isinstance(parametrize_args[0], (tuple, list)) else [ |
80 | | - parametrize_args[0]] |
81 | | - param_values = parametrize_args[1] |
| 78 | + params = get_parametrize_params(parametrize_args) |
| 79 | + |
| 80 | + self.param_index = self.get_param_index(node, params) |
| 81 | + self.example_kwargs = self.get_example_kwargs(node, params) |
| 82 | + |
| 83 | + def get_param_index(self, node, params): |
| 84 | + if params: |
| 85 | + param_names = params[0]['names'] |
| 86 | + param_values = params[0]['values'] |
82 | 87 | node_param_values = [node.funcargs[param_name] for param_name in param_names] |
83 | 88 | if node_param_values in param_values: |
84 | | - self.param_index = param_values.index(node_param_values) |
| 89 | + return param_values.index(node_param_values) |
85 | 90 | elif tuple(node_param_values) in param_values: |
86 | | - self.param_index = param_values.index(tuple(node_param_values)) |
87 | | - self.example_kwargs = { |
88 | | - example_param: force_unicode(node.funcargs[example_param]) |
89 | | - for example_param in scenario.get_example_params() |
| 91 | + return param_values.index(tuple(node_param_values)) |
| 92 | + return None |
| 93 | + |
| 94 | + def get_example_kwargs(self, node, params): |
| 95 | + params_names = (param['names'] for param in params) |
| 96 | + all_names = sum(params_names, []) |
| 97 | + return { |
| 98 | + example_param_name: force_unicode(node.funcargs[example_param_name]) |
| 99 | + for example_param_name in all_names |
90 | 100 | } |
91 | 101 |
|
92 | 102 | @property |
|
0 commit comments