WebTestRequest Class

Represents an HTTP request that will be sent to a Web server.

Inheritance Hierarchy

System.Object
  Microsoft.VisualStudio.TestTools.WebTesting.WebTestItem
    Microsoft.VisualStudio.TestTools.WebTesting.WebTestRequest

Namespace:  Microsoft.VisualStudio.TestTools.WebTesting
Assembly:  Microsoft.VisualStudio.QualityTools.WebTestFramework (in Microsoft.VisualStudio.QualityTools.WebTestFramework.dll)

Syntax

'Declaration
<SerializableAttribute> _
Public Class WebTestRequest _
    Inherits WebTestItem
[SerializableAttribute]
public class WebTestRequest : WebTestItem
[SerializableAttribute]
public ref class WebTestRequest : public WebTestItem
[<SerializableAttribute>]
type WebTestRequest =  
    class
        inherit WebTestItem
    end
public class WebTestRequest extends WebTestItem

The WebTestRequest type exposes the following members.

Constructors

  Name Description
Public method WebTestRequest(String) Initializes a new instance of the WebTestRequest class by using a URL string.
Public method WebTestRequest(Uri) Initializes a new instance of the WebTestRequest class by using a Uri object.

Top

Properties

  Name Description
Public property Body Gets or sets the body of this request.
Public property BodyBytes Gets the bytes that are associated with the body.
Public property Cache Gets or sets a value that indicates whether to simulate browser caching for the request.
Public property ClientCertificates Gets or sets a reference to allow users to authenticate by using X.509 SSL certificates.
Public property ContentLength Gets the length, in bytes, of the request body.
Public property ContentType Gets the content type of the request.
Public property Cookies Gets a collection of cookies.
Public property CorrelationExtractionRuleReferences Gets the collection of references to extraction rules that are used to correlate dynamic parameters.
Public property DependentRequests Gets the collection of dependent requests.
Public property EncodeRedirectedUrl Gets or sets a Boolean value that indicates whether to encode query string parameters on a redirected URL.
Public property Encoding Gets or sets the Encoding format.
Public property ExpectedHttpStatusCode Gets or sets the HTTP status code that is expected for this request.
Public property ExpectedResponseUrl Gets or sets the expected URL of the response. When a redirect is expected, this URL might differ from the request URL.
Public property ExtractionRuleReferences Gets the collection of references to extraction rules that are defined for the request.
Public property FollowRedirects Gets or sets a value that indicates whether to automatically follow redirects.
Public property HasCookies Gets a value that indicates whether the request has cookies.
Public property HasDependentRequests Gets a value that indicates whether the request has dependent requests.
Public property HasHeaders Gets a value that indicates whether the request has HTTP headers.
Public property HasQueryStringParameters Gets a value that indicates whether the request has querystring parameters.
Public property Headers Gets the collection of HTTP headers for the request.
Public property IsRedirectFollow Gets a value that indicates whether the request was created as the result of following a redirect.
Public property ItemId Zero-based sequence number of the item in the Web performance test. (Inherited from WebTestItem.)
Public property Method Gets or sets the method to use for the request.
Public property Outcome Gets or sets the Pass or Fail outcome of the Web performance test request.
Public property ParseDependentRequests Gets or sets a value that indicates whether to automatically fetch dependent requests that are found in the response body.
Public property QueryStringParameters Gets the list of query string parameters for the request.
Public property RecordedCookies Gets the cookies that is recorded together with the request.
Public property RecordResult Gets or sets a value that indicates whether individual statistics and result data are tracked for this request.
Public property ReportingName Gets or sets the reporting name for a request.
Public property ResponseTimeGoal Gets or sets the response time goal for a particular page.
Public property SendChunked Gets or sets a value that indicates whether the user can send a chunked request body.
Public property ThinkTime Gets or sets a value that represents the think time to wait after the response is received.
Public property Timeout Gets or sets a value that indicates the time to wait for this request before timing out.
Public property Url Gets or sets the URL to the resource that is used for the request.
Public property UrlWithQueryString Gets the URL to the resource that is used for the request. This includes the query string.
Public property ValidationRuleReferences Gets the collection of references to validation rules that are defined for the request.
Public property Version Gets or sets the HTTP version of the request.
Public property WebTestRequestPluginReferences Gets the collection of references to the Web performance test request plug-ins that are defined on the request.

Top

Methods

  Name Description
Public method Clone Makes a deep copy of the WebTestRequest object. (Overrides WebTestItem.Clone().)
Public method Equals Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected method Finalize Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method GetType Gets the Type of the current instance. (Inherited from Object.)
Public method InternalSetOutcome Represents the outcome that was set internally by RequestPlugin.
Protected method MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method RuntimeClone Returns a clone of this object at run time. (Inherited from WebTestItem.)
Public method ToString Returns a string that represents the current object. (Inherited from Object.)

Top

Events

  Name Description
Public event ExtractValues Occurs after the ValidateResponse event.
Public event PostRequest Occurs after the ValidateResponse and the ExtractValues events.
Public event PreRequest Occurs before the request is sent.
Public event PreRequestDataBinding This event is raised before the data binding occurs.
Public event ValidateResponse Occurs immediately after the response is received.
Public event ValidateResponseOnPageComplete This event is raised after the page is fully loaded. This is used to check that the response was valid.

Top

Remarks

This class provides the core functionality to simulate HTTP requests in a coded Web performance test. The simulated HTTP requests are returned to the Web performance test engine by the GetRequestEnumerator method for Visual C# Web performance tests and by the Run method that is used by ThreadedWebTest in Visual Basic.

This class is serializable.

Examples

The following Web performance test extracts values that represent the status of check boxes and adds the values to the context.

namespace TestProject1
{
    using System;
    using System.Collections.Generic;
    using Microsoft.VisualStudio.TestTools.WebTesting;
    using ClassLibrary2;

    public class MyWebTest : WebTest
    {
        public MyWebTest()
        {
            this.PreAuthenticate = true;
        }

        public override IEnumerator<WebTestRequest> GetRequestEnumerator()
        {
            WebTestRequest request1 = new WebTestRequest("https://localhost/ts");
            ExtractCheckBoxes rule1 = new ExtractCheckBoxes();
            rule1.FindCheckedBoxes = true;
            rule1.ContextParameterName = "CheckedBoxes";
            request1.ExtractValues += new EventHandler
                <ExtractionEventArgs>(rule1.Extract);
            ExtractCheckBoxes rule2 = new ExtractCheckBoxes();
            rule2.FindCheckedBoxes = false;
            rule2.ContextParameterName = "";
            request1.ExtractValues += new EventHandler
                <ExtractionEventArgs>(rule2.Extract);
            yield return request1;
        }
    }
}

The following is a coded Web performance test called MyCodedWebTest that inherits from ThreadedWebTest. The second request posts form information that is contained in three controls back to the server.

Option Strict Off
Option Explicit On

Imports Microsoft.VisualStudio.TestTools.WebTesting
Imports Microsoft.VisualStudio.TestTools.WebTesting.Rules
Imports System
Imports System.Collections.Generic

Namespace TestProject2
    
    Public Class MyCodedWebTest
        Inherits ThreadedWebTest
        
        Public Sub New()
            MyBase.New
            Me.PreAuthenticate = true
            // TODO: specify your proxy below
            Me.Proxy = "myproxy.seattle.corp.northwind.com:80"
        End Sub
        
        Public Overrides Sub Run()
            Dim request1 As WebTestRequest = New WebTestRequest _
                ("https://localhost/MyWebSite")
            request1.ThinkTime = 1
            Dim rule1 As ExtractHiddenFields = New ExtractHiddenFields
            rule1.ContextParameterName = "1"
            AddHandler request1.ExtractValues, AddressOf rule1.Extract
            MyBase.Send(request1)

            Dim request2 As WebTestRequest = New WebTestRequest _
                ("https://localhost/MyWebSite/Default.aspx")
            request2.Method = "POST"
            Dim request2Body As FormPostHttpBody = New FormPostHttpBody
            request2Body.FormPostParameters.Add("__VIEWSTATE", "{{$HIDDEN1" + _
                ".__VIEWSTATE}}")
            request2Body.FormPostParameters.Add("Button1", "Button")
            request2Body.FormPostParameters.Add("TextBox1", "Hello text")
            request2.Body = request2Body
            Dim rule2 As ExtractHiddenFields = New ExtractHiddenFields
            rule2.ContextParameterName = ""
            AddHandler request2.ExtractValues, AddressOf rule2.Extract
            MyBase.Send(request2)
        End Sub
    End Class
End Namespace

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

Microsoft.VisualStudio.TestTools.WebTesting Namespace

Other Resources

Working with Web Tests

Working with Web Tests Overview