mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-28 19:47:14 +08:00
fix: modify the format of data-driven parameters setting
This commit is contained in:
@@ -10,8 +10,14 @@
|
|||||||
},
|
},
|
||||||
"parameters_setting": {
|
"parameters_setting": {
|
||||||
"strategies": {
|
"strategies": {
|
||||||
"user_agent": "sequential",
|
"user_agent": {
|
||||||
"username-password": "random"
|
"name": "user-identity",
|
||||||
|
"pick_order": "sequential"
|
||||||
|
},
|
||||||
|
"username-password": {
|
||||||
|
"name": "user-info",
|
||||||
|
"pick_order": "random"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"limit": 6
|
"limit": 6
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -5,8 +5,12 @@ config:
|
|||||||
username-password: ${parameterize($file)}
|
username-password: ${parameterize($file)}
|
||||||
parameters_setting:
|
parameters_setting:
|
||||||
strategies:
|
strategies:
|
||||||
user_agent: "sequential"
|
user_agent:
|
||||||
username-password: "random"
|
name: "user-identity"
|
||||||
|
pick_order: "sequential"
|
||||||
|
username-password:
|
||||||
|
name: "user-info"
|
||||||
|
pick_order: "random"
|
||||||
limit: 6
|
limit: 6
|
||||||
variables:
|
variables:
|
||||||
app_version: v1
|
app_version: v1
|
||||||
|
|||||||
+13
-8
@@ -12,17 +12,17 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type TParamsConfig struct {
|
type TParamsConfig struct {
|
||||||
Strategy iteratorStrategy `json:"strategy,omitempty" yaml:"strategy,omitempty"` // overall strategy
|
PickOrder iteratorPickOrder `json:"strategy,omitempty" yaml:"strategy,omitempty"` // overall pick-order strategy
|
||||||
Strategies map[string]iteratorStrategy `json:"strategies,omitempty" yaml:"strategies,omitempty"` // individual strategies for each parameters
|
Strategies map[string]iteratorStrategy `json:"strategies,omitempty" yaml:"strategies,omitempty"` // individual strategies for each parameters
|
||||||
Limit int `json:"limit,omitempty" yaml:"limit,omitempty"`
|
Limit int `json:"limit,omitempty" yaml:"limit,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type iteratorStrategy string
|
type iteratorPickOrder string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
strategySequential iteratorStrategy = "sequential"
|
strategySequential iteratorPickOrder = "sequential"
|
||||||
strategyRandom iteratorStrategy = "random"
|
strategyRandom iteratorPickOrder = "random"
|
||||||
strategyUnique iteratorStrategy = "unique"
|
strategyUnique iteratorPickOrder = "unique"
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -33,6 +33,11 @@ const (
|
|||||||
*/
|
*/
|
||||||
type Parameters []map[string]interface{}
|
type Parameters []map[string]interface{}
|
||||||
|
|
||||||
|
type iteratorStrategy struct {
|
||||||
|
Name string `json:"name,omitempty" yaml:"name,omitempty"`
|
||||||
|
PickOrder iteratorPickOrder `json:"pick_order,omitempty" yaml:"pick_order,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
func initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
|
func initParametersIterator(cfg *TConfig) (*ParametersIterator, error) {
|
||||||
parameters, err := loadParameters(cfg.Parameters, cfg.Variables)
|
parameters, err := loadParameters(cfg.Parameters, cfg.Variables)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -65,12 +70,12 @@ func newParametersIterator(parameters map[string]Parameters, config *TParamsConf
|
|||||||
// check parameter individual strategy
|
// check parameter individual strategy
|
||||||
strategy, ok := config.Strategies[paramName]
|
strategy, ok := config.Strategies[paramName]
|
||||||
if !ok {
|
if !ok {
|
||||||
// default to overall strategy
|
// default to overall pick order
|
||||||
strategy = config.Strategy
|
strategy.PickOrder = config.PickOrder
|
||||||
}
|
}
|
||||||
|
|
||||||
// group parameters by strategy
|
// group parameters by strategy
|
||||||
if strategy == strategyRandom {
|
if strategy.PickOrder == strategyRandom {
|
||||||
iterator.randomParameterNames = append(iterator.randomParameterNames, paramName)
|
iterator.randomParameterNames = append(iterator.randomParameterNames, paramName)
|
||||||
} else {
|
} else {
|
||||||
parametersList = append(parametersList, parameters[paramName])
|
parametersList = append(parametersList, parameters[paramName])
|
||||||
|
|||||||
+14
-14
@@ -137,25 +137,25 @@ func TestInitParametersIteratorCount(t *testing.T) {
|
|||||||
},
|
},
|
||||||
6, // 3 * 2 * 1
|
6, // 3 * 2 * 1
|
||||||
},
|
},
|
||||||
// default equals to set overall parameters strategy to "sequential"
|
// default equals to set overall parameters pick-order to "sequential"
|
||||||
{
|
{
|
||||||
&TConfig{
|
&TConfig{
|
||||||
Parameters: configParameters,
|
Parameters: configParameters,
|
||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Strategy: "sequential",
|
PickOrder: "sequential",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
6, // 3 * 2 * 1
|
6, // 3 * 2 * 1
|
||||||
},
|
},
|
||||||
// default equals to set each individual parameters strategy to "sequential"
|
// default equals to set each individual parameters pick-order to "sequential"
|
||||||
{
|
{
|
||||||
&TConfig{
|
&TConfig{
|
||||||
Parameters: configParameters,
|
Parameters: configParameters,
|
||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Strategies: map[string]iteratorStrategy{
|
Strategies: map[string]iteratorStrategy{
|
||||||
"username-password": "sequential",
|
"username-password": {Name: "user-info", PickOrder: "sequential"},
|
||||||
"user_agent": "sequential",
|
"user_agent": {Name: "user-identity", PickOrder: "sequential"},
|
||||||
"app_version": "sequential",
|
"app_version": {Name: "app-version", PickOrder: "sequential"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -166,33 +166,33 @@ func TestInitParametersIteratorCount(t *testing.T) {
|
|||||||
Parameters: configParameters,
|
Parameters: configParameters,
|
||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Strategies: map[string]iteratorStrategy{
|
Strategies: map[string]iteratorStrategy{
|
||||||
"user_agent": "sequential",
|
"user_agent": {Name: "user-identity", PickOrder: "sequential"},
|
||||||
"app_version": "sequential",
|
"app_version": {Name: "app-version", PickOrder: "sequential"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
6, // 3 * 2 * 1
|
6, // 3 * 2 * 1
|
||||||
},
|
},
|
||||||
|
|
||||||
// set overall parameters overall strategy to "random"
|
// set overall parameters overall pick-order to "random"
|
||||||
// each random parameters only select one item
|
// each random parameters only select one item
|
||||||
{
|
{
|
||||||
&TConfig{
|
&TConfig{
|
||||||
Parameters: configParameters,
|
Parameters: configParameters,
|
||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Strategy: "random",
|
PickOrder: "random",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
1, // 1 * 1 * 1
|
1, // 1 * 1 * 1
|
||||||
},
|
},
|
||||||
// set some individual parameters strategy to "random"
|
// set some individual parameters pick-order to "random"
|
||||||
// this will override overall strategy
|
// this will override overall strategy
|
||||||
{
|
{
|
||||||
&TConfig{
|
&TConfig{
|
||||||
Parameters: configParameters,
|
Parameters: configParameters,
|
||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Strategies: map[string]iteratorStrategy{
|
Strategies: map[string]iteratorStrategy{
|
||||||
"user_agent": "random",
|
"user_agent": {Name: "user-identity", PickOrder: "random"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -203,7 +203,7 @@ func TestInitParametersIteratorCount(t *testing.T) {
|
|||||||
Parameters: configParameters,
|
Parameters: configParameters,
|
||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Strategies: map[string]iteratorStrategy{
|
Strategies: map[string]iteratorStrategy{
|
||||||
"username-password": "random",
|
"username-password": {Name: "user-info", PickOrder: "random"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -349,7 +349,7 @@ func TestInitParametersIteratorContent(t *testing.T) {
|
|||||||
ParametersSetting: &TParamsConfig{
|
ParametersSetting: &TParamsConfig{
|
||||||
Limit: 5, // limit could also be greater than total
|
Limit: 5, // limit could also be greater than total
|
||||||
Strategies: map[string]iteratorStrategy{
|
Strategies: map[string]iteratorStrategy{
|
||||||
"username-password": "random",
|
"username-password": {Name: "user-info", PickOrder: "random"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user