@@ -800,24 +800,31 @@ def _get_argnames_argvalues(argnames=None, argvalues=None, **args):
800800 # simplify if needed to comply with pytest.mark.parametrize
801801 if len (argnames ) == 1 :
802802 argvalues = [l [0 ] if not is_marked_parameter_value (l ) else l for l in argvalues ]
803+ return argnames , argvalues
803804
804- elif isinstance (argnames , string_types ):
805+ if isinstance (argnames , string_types ):
805806 # (2) argnames + argvalues, as usual. However **args can also be passed and should be added
806807 argnames = get_param_argnames_as_list (argnames )
807808
808- if argvalues is None :
809- raise ValueError ( "No argvalues provided while argnames are provided " )
809+ if not isinstance ( argnames , ( list , tuple )) :
810+ raise TypeError ( "argnames should be a string, list or a tuple " )
810811
811- # transform argvalues to a list (it can be a generator)
812- try :
813- argvalues = list (argvalues )
814- except TypeError :
815- raise InvalidParamsList (argvalues )
816-
817- # append **args
818- if len (kw_argnames ) > 0 :
819- argnames , argvalues = cart_product_pytest ((argnames , kw_argnames ),
820- (argvalues , kw_argvalues ))
812+ if any ([not isinstance (argname , str ) for argname in argnames ]):
813+ raise TypeError ("all argnames should be strings" )
814+
815+ if argvalues is None :
816+ raise ValueError ("No argvalues provided while argnames are provided" )
817+
818+ # transform argvalues to a list (it can be a generator)
819+ try :
820+ argvalues = list (argvalues )
821+ except TypeError :
822+ raise InvalidParamsList (argvalues )
823+
824+ # append **args
825+ if len (kw_argnames ) > 0 :
826+ argnames , argvalues = cart_product_pytest ((argnames , kw_argnames ),
827+ (argvalues , kw_argvalues ))
821828
822829 return argnames , argvalues
823830
0 commit comments