문제

리 ASP.Net 사이트로 리디렉션하는 url 을 보여줍니다 세션-id 입니다.다음과 같다:

http://localhost/(S(f3rjcw45q4cqarboeme53lbx))/습니다.aspx

이 id 를 가진 독특한 모든 요청을 합니다.

가을 테스트하는 이 사이트를 사용하여 표준 visual studio2008/2010 용 웹?할 수 있는 방법을 제공한 테스트 데이터가?

나는 전화를 몇 가지의 다른 페이지를 사용하는 동일한 id 입니다.

도움이 되었습니까?

해결책

네,그것은 상대적으로 쉽습니다.을 만들어야 합니다 코드 웹 그러나입니다.

내 예를 들어 우리는 로그인후 반환하는 url 을 포함하여 세션을 문자열입니다.그 후에 우리는 수익에 로그인 게시물을 요청(request3)을 열거자는 내가 다음과 같습니다.

WebTestRequest request3 = new WebTestRequest((this.Context["WebServer1"].ToString() + "/ICS/Login/English/Login.aspx"));
//more request setup code removed for clarity
yield return request3;
string responseUrl = Context.LastResponse.ResponseUri.AbsoluteUri;
string cookieUrl = GetUrlCookie(responseUrl, this.Context["WebServer1"].ToString(),"/main.aspx"); 
request3 = null;

는 GetUrlCookie 무언가가 다음과 같다:

public static string GetUrlCookie(string fullUrl, string webServerUrl, string afterUrlPArt)
    {
        string result = fullUrl.Substring(webServerUrl.Length);
        result = result.Substring(0, result.Length - afterUrlPArt.Length);
        return result;
    }

일단 당신이션 쿠키 문자열을 대체할 수 있습니다 그것은 정말 쉽에 이후의 모든 url 을 요청의/포스트 예:

WebTestRequest request4 = new WebTestRequest((this.Context["WebServer1"].ToString() + cookieUrl + "/mySecureForm.aspx"));

내가 사과에 대한 내 코드는 거지만,그것은 사용되지 않 내에서 프로젝트에서 뽑아의 첫 번째 버전 codebase-고 말하는 그것이 쉽다:)

어떤 부하 테스트,응용 프로그램에 따라할 수 있으로 올 저장 프로시저를 통화를 제공하는 별개의 로그인 정보를 각 시간을 테스트가 실행됩니다.

주기 때문에,응답 url 할 수 없는 결정 앞으로 시간에 대해,로그인 게시물을 일시적으로 끄 urlValidationEventHandler.이렇게 하려면 저장 validationruleeventhandler 에서 지역 변수:

        ValidateResponseUrl validationRule1 = new ValidateResponseUrl();
        urlValidationRuleEventHandler = new EventHandler<ValidationEventArgs>(validationRule1.Validate);

그래서 수 있는 그런 다음 전원을 켜고 떨어져 나가는 요구합니다:

this.ValidateResponse -= urlValidationRuleEventHandler ;
this.ValidateResponse += urlValidationRuleEventHandler ;

대체 코드는 자신의 이와 같은(reflectored Visual Studio 코드 변경을 대/소문자를 구분하지 않습니다.

class QueryLessCaseInsensitiveValidateResponseUrl : ValidateResponseUrl
{
    public override void Validate(object sender, ValidationEventArgs e)
    {
        Uri uri;
        string uriString = string.IsNullOrEmpty(e.Request.ExpectedResponseUrl) ? e.Request.Url : e.Request.ExpectedResponseUrl;
        if (!Uri.TryCreate(e.Request.Url, UriKind.Absolute, out uri))
        {
            e.Message = "The request URL could not be parsed";
            e.IsValid = false;
        }
        else
        {
            Uri uri2;
            string leftPart = uri.GetLeftPart(UriPartial.Path);
            if (!Uri.TryCreate(uriString, UriKind.Absolute, out uri2))
            {
                e.Message = "The request URL could not be parsed";
                e.IsValid = false;
            }
            else
            {
                uriString = uri2.GetLeftPart(UriPartial.Path);
                ////this removes the query string
                //uriString.Substring(0, uriString.Length - uri2.Query.Length);
                Uri uritemp = new Uri(uriString);
                if (uritemp.Query.Length > 0)
                {
                    string fred = "There is a problem";
                }
                //changed to ignore case
                if (string.Equals(leftPart, uriString, StringComparison.OrdinalIgnoreCase))
                {
                    e.IsValid = true;
                }
                else
                {
                    e.Message = string.Format("The value of the ExpectedResponseUrl property '{0}' does not equal the actual response URL '{1}'. QueryString parameters were ignored.", new object[] { uriString, leftPart });
                    e.IsValid = false;
                }
            }
        }
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top