WebTest.Outcome & WebTestRequest.Outcome

You can now determine whether a Request or Test passed or failed from within a Coded WebTest or a WebTest Plug-in by using the Outcome property on the WebTest and WebTestRequest objects.  This can be used to do some branching based on whether or not a request passes, as well as detect at the end of a test whether it passed or failed and take some action based on the result, here’s an example if the GetRequestEnumerator method from a coded webtest making use of these two properties: 

public override IEnumerator<WebTestRequest> GetRequestEnumerator()


    // Initialize validation rules that apply to all requests in the WebTest

    if ((this.Context.ValidationLevel >= Microsoft.VisualStudio.TestTools.WebTesting.ValidationLevel.Low))


        ValidateResponseUrl validationRule1 = new ValidateResponseUrl();

        this.ValidateResponse += new EventHandler<ValidationEventArgs>(validationRule1.Validate);



    WebTestRequest request1 = new WebTestRequest(“http://site/default.aspx”);

    request1.ThinkTime = 4;

    request1.RecordedResponseUrl = “http://site/default.aspx”;

    yield return request1;


    if (request1.Outcome == Outcome.Fail)


         WebTestRequest request2 = new WebTestRequest(“http://site/a.aspx”);

         request2.ThinkTime = 3;

         request2.RecordedResponseUrl = “http://site/a.aspx”;

         yield return request2;




         WebTestRequest request3 = new WebTestRequest(“http://site/b.aspx”);

         request3.RecordedResponseUrl = “http://site/b.aspx”;

         yield return request3;



    if (this.Outcome == Outcome.Fail)


         //do some logging stuff

         MessageBox.Show(“Test Failed, doing some logging now.”);



If request1 fails then the next request yielded is request2, otherwise request3 is yielded.  At the end of the test we check the overall test outcome and throw up a message box in case of failure, normally we might do some kind of additional logging or something at that point.


Comments (1)

  1. Several new API Enhancements have been made for WebTest’s in the Orcas release of Visual Studio Team