web性能测试将post参数数组绑定到数据源

时间:2015-08-06 06:07:44

标签: visual-studio-2013 performance-testing load-testing

在网络性能测试中,我有一个POST请求,其中包含一系列用户及其详细信息。用户数量不能超过1到100+。

通过网络测试记录器我捕获了包含3个用户的POST请求。

POST请求

{{WebServer1}}/test/mypage/users
  |-  Form Post Parameters
      |-  Users[0].Id=90001
      |-  Users[0].FirstName=Rice
      |-  Users[0].LastName=Bran
      |-  Users[1].Id=90002
      |-  Users[1].FirstName=Samantha
      |-  Users[1].LastName=Rock
      |-  Users[1].Id=90003
      |-  Users[1].FirstName=Jenny
      |-  Users[1].LastName=Bryan

我需要发送100个用户的请求。一种方法是在请求中手动添加表单发布参数,但是后续维护将很困难。

我正在考虑使用像csv这样的数据源,其中包含用户详细信息,并以某种方式将它们绑定到post参数。

CSV(testusers)

Id,FirstName,LastName
90001,Rice,Bran
90002,Samantha,Rock

我试图绑定它们以形成如下所示的post params,但它不起作用。 [它只需要一个数据行]

表格post params与csv数据绑定

{{WebServer1}}/test/mypage/users
  |-  Form Post Parameters
      |-  Users.Id=users.users#csv.Id
      |-  Users.FirstName=users.users#csv.FirstName
      |-  Users.LastName=users.users#csv.LastName

有没有人知道从数据源创建表单post参数数组的正确方法。我需要为此创建编码网络测试或一些插件吗? (我打算尝试,但简单的绑定会很棒)

编辑:10Sep2015

我找不到任何解决方案。结束创建一个编码的Web测试,它将为每个数据行添加一个请求。

在编码的Web测试中添加了此部署项:

[DeploymentItem("Project\\Data\\users.csv")] 
public class HelloCodedWebtest : WebTest
{
    public HelloCodedWebtest()
    {       
        .....              
        .....

       // new Users().GetUsers() reads the csv and returns a list of user object, which i have stored in the context
       this.Context.Add("Users", new Users().GetUsers());           
    }

     public override IEnumerator<WebTestRequest> GetRequestEnumerator()
     {
        ......
        ......

        // Here for the request I have created the form post body from the list of users stored which was stored in the context.

        var myUsers = (List<User>) this.Context["Users"];

        foreach (var u in myUsers)
        {
            request2Body.FormPostParameters.Add("Users["+ myUsers.IndexOf(recipient) +"].Id", u.Id);
            request2Body.FormPostParameters.Add("Users["+ myUsers.IndexOf(recipient) +"].FirstName", u.FirstName);
            request2Body.FormPostParameters.Add("Users["+ myUsers.IndexOf(recipient) +"].LastName", u.LastName);
        }

        ....
     }
}

到目前为止,这工作正常,但我更喜欢使用一些插件进行正常的网络测试,而不是编写网络测试。

0 个答案:

没有答案