func (client *ClientImpl) CreateTestVariable(ctx context.Context, args CreateTestVariableArgs) (*TestVariable, error) {
	if args.TestVariableCreateUpdateParameters == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.TestVariableCreateUpdateParameters"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	body, marshalErr := json.Marshal(*args.TestVariableCreateUpdateParameters)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("2c61fac6-ac4e-45a5-8c38-1c2b8fd8ea6c")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.1", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue TestVariable
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
[Preview API] Create a test variable.
package testplan
import (
	"bytes"
	"context"
	"encoding/json"
	"github.com/google/uuid"
	"github.com/microsoft/azure-devops-go-api/azuredevops"
	"net/http"
	"net/url"
	"strconv"
)
type Client interface {
	AddTestCasesToSuite(context.Context, AddTestCasesToSuiteArgs) (*[]TestCase, error)
	CloneTestPlan(context.Context, CloneTestPlanArgs) (*CloneTestPlanOperationInformation, error)
	CloneTestSuite(context.Context, CloneTestSuiteArgs) (*CloneTestSuiteOperationInformation, error)
	CreateTestConfiguration(context.Context, CreateTestConfigurationArgs) (*TestConfiguration, error)
	CreateTestPlan(context.Context, CreateTestPlanArgs) (*TestPlan, error)
	CreateTestSuite(context.Context, CreateTestSuiteArgs) (*TestSuite, error)
	CreateTestVariable(context.Context, CreateTestVariableArgs) (*TestVariable, error)
	DeleteTestCase(context.Context, DeleteTestCaseArgs) error
	DeleteTestConfguration(context.Context, DeleteTestConfgurationArgs) error
	DeleteTestPlan(context.Context, DeleteTestPlanArgs) error
	DeleteTestSuite(context.Context, DeleteTestSuiteArgs) error
	DeleteTestVariable(context.Context, DeleteTestVariableArgs) error
	GetCloneInformation(context.Context, GetCloneInformationArgs) (*CloneTestPlanOperationInformation, error)
	GetPoints(context.Context, GetPointsArgs) (*[]TestPoint, error)
	GetPointsList(context.Context, GetPointsListArgs) (*GetPointsListResponseValue, error)
	GetSuiteCloneInformation(context.Context, GetSuiteCloneInformationArgs) (*CloneTestSuiteOperationInformation, error)
	GetSuiteEntries(context.Context, GetSuiteEntriesArgs) (*[]SuiteEntry, error)
	GetSuitesByTestCaseId(context.Context, GetSuitesByTestCaseIdArgs) (*[]TestSuite, error)
	GetTestCase(context.Context, GetTestCaseArgs) (*[]TestCase, error)
	GetTestCaseList(context.Context, GetTestCaseListArgs) (*GetTestCaseListResponseValue, error)
	GetTestConfigurationById(context.Context, GetTestConfigurationByIdArgs) (*TestConfiguration, error)
	GetTestConfigurations(context.Context, GetTestConfigurationsArgs) (*GetTestConfigurationsResponseValue, error)
	GetTestPlanById(context.Context, GetTestPlanByIdArgs) (*TestPlan, error)
	GetTestPlans(context.Context, GetTestPlansArgs) (*GetTestPlansResponseValue, error)
	GetTestSuiteById(context.Context, GetTestSuiteByIdArgs) (*TestSuite, error)
	GetTestSuitesForPlan(context.Context, GetTestSuitesForPlanArgs) (*GetTestSuitesForPlanResponseValue, error)
	GetTestVariableById(context.Context, GetTestVariableByIdArgs) (*TestVariable, error)
	GetTestVariables(context.Context, GetTestVariablesArgs) (*GetTestVariablesResponseValue, error)
	RemoveTestCasesFromSuite(context.Context, RemoveTestCasesFromSuiteArgs) error
	ReorderSuiteEntries(context.Context, ReorderSuiteEntriesArgs) (*[]SuiteEntry, error)
	UpdateSuiteTestCases(context.Context, UpdateSuiteTestCasesArgs) (*[]TestCase, error)
	UpdateTestConfiguration(context.Context, UpdateTestConfigurationArgs) (*TestConfiguration, error)
	UpdateTestPlan(context.Context, UpdateTestPlanArgs) (*TestPlan, error)
	UpdateTestPoints(context.Context, UpdateTestPointsArgs) (*[]TestPoint, error)
	UpdateTestSuite(context.Context, UpdateTestSuiteArgs) (*TestSuite, error)
	UpdateTestVariable(context.Context, UpdateTestVariableArgs) (*TestVariable, error)
}
type ClientImpl struct {
	Client azuredevops.Client
}
func NewClient(ctx context.Context, connection *azuredevops.Connection) Client {
	client := connection.GetClientByUrl(connection.BaseUrl)
	return &ClientImpl{
		Client: *client,
	}
}
func (client *ClientImpl) AddTestCasesToSuite(ctx context.Context, args AddTestCasesToSuiteArgs) (*[]TestCase, error) {
	if args.SuiteTestCaseCreateUpdateParameters == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.SuiteTestCaseCreateUpdateParameters"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.PlanId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.PlanId"}
	}
	routeValues["planId"] = strconv.Itoa(*args.PlanId)
	if args.SuiteId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.SuiteId"}
	}
	routeValues["suiteId"] = strconv.Itoa(*args.SuiteId)
	body, marshalErr := json.Marshal(*args.SuiteTestCaseCreateUpdateParameters)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("a9bd61ac-45cf-4d13-9441-43dcd01edf8d")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.2", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue []TestCase
	err = client.Client.UnmarshalCollectionBody(resp, &responseValue)
	return &responseValue, err
}
type AddTestCasesToSuiteArgs struct {
	SuiteTestCaseCreateUpdateParameters *[]SuiteTestCaseCreateUpdateParameters
	Project *string
	PlanId *int
	SuiteId *int
}
func (client *ClientImpl) CloneTestPlan(ctx context.Context, args CloneTestPlanArgs) (*CloneTestPlanOperationInformation, error) {
	if args.CloneRequestBody == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.CloneRequestBody"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	queryParams := url.Values{}
	if args.DeepClone != nil {
		queryParams.Add("deepClone", strconv.FormatBool(*args.DeepClone))
	}
	body, marshalErr := json.Marshal(*args.CloneRequestBody)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("e65df662-d8a3-46c7-ae1c-14e2d4df57e1")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.2", routeValues, queryParams, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue CloneTestPlanOperationInformation
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CloneTestPlanArgs struct {
	CloneRequestBody *CloneTestPlanParams
	Project *string
	DeepClone *bool
}
func (client *ClientImpl) CloneTestSuite(ctx context.Context, args CloneTestSuiteArgs) (*CloneTestSuiteOperationInformation, error) {
	if args.CloneRequestBody == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.CloneRequestBody"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	queryParams := url.Values{}
	if args.DeepClone != nil {
		queryParams.Add("deepClone", strconv.FormatBool(*args.DeepClone))
	}
	body, marshalErr := json.Marshal(*args.CloneRequestBody)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("181d4c97-0e98-4ee2-ad6a-4cada675e555")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.2", routeValues, queryParams, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue CloneTestSuiteOperationInformation
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CloneTestSuiteArgs struct {
	CloneRequestBody *CloneTestSuiteParams
	Project *string
	DeepClone *bool
}
func (client *ClientImpl) CreateTestConfiguration(ctx context.Context, args CreateTestConfigurationArgs) (*TestConfiguration, error) {
	if args.TestConfigurationCreateUpdateParameters == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.TestConfigurationCreateUpdateParameters"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	body, marshalErr := json.Marshal(*args.TestConfigurationCreateUpdateParameters)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("8369318e-38fa-4e84-9043-4b2a75d2c256")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.1", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue TestConfiguration
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateTestConfigurationArgs struct {
	TestConfigurationCreateUpdateParameters *TestConfigurationCreateUpdateParameters
	Project *string
}
func (client *ClientImpl) CreateTestPlan(ctx context.Context, args CreateTestPlanArgs) (*TestPlan, error) {
	if args.TestPlanCreateParams == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.TestPlanCreateParams"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	body, marshalErr := json.Marshal(*args.TestPlanCreateParams)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("0e292477-a0c2-47f3-a9b6-34f153d627f4")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.1", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue TestPlan
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateTestPlanArgs struct {
	TestPlanCreateParams *TestPlanCreateParams
	Project *string
}
func (client *ClientImpl) CreateTestSuite(ctx context.Context, args CreateTestSuiteArgs) (*TestSuite, error) {
	if args.TestSuiteCreateParams == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.TestSuiteCreateParams"}
	}
	routeValues := make(map[string]string)
	if args.Project == nil || *args.Project == "" {
		return nil, &azuredevops.ArgumentNilOrEmptyError{ArgumentName: "args.Project"}
	}
	routeValues["project"] = *args.Project
	if args.PlanId == nil {
		return nil, &azuredevops.ArgumentNilError{ArgumentName: "args.PlanId"}
	}
	routeValues["planId"] = strconv.Itoa(*args.PlanId)
	body, marshalErr := json.Marshal(*args.TestSuiteCreateParams)
	if marshalErr != nil {
		return nil, marshalErr
	}
	locationId, _ := uuid.Parse("1046d5d3-ab61-4ca7-a65a-36118a978256")
	resp, err := client.Client.Send(ctx, http.MethodPost, locationId, "5.1-preview.1", routeValues, nil, bytes.NewReader(body), "application/json", "application/json", nil)
	if err != nil {
		return nil, err
	}
	var responseValue TestSuite
	err = client.Client.UnmarshalBody(resp, &responseValue)
	return &responseValue, err
}
type CreateTestSuiteArgs struct {
	TestSuiteCreateParams *TestSuiteCreateParams
	Project *string
	PlanId *int
}