سؤال

لدينا ASP.Net موقع الموجهات لك إلى عنوان url الذي يظهر معرف الجلسة.مثل هذا:

http://localhost/(S(f3rjcw45q4cqarboeme53lbx))/الرئيسي.aspx

هذه الهوية هي فريدة من نوعها مع كل طلب.

هل من الممكن أن اختبار هذا الموقع باستخدام معيار visual studio 2008/2010 webtest?كيف يمكنني تقديم اختبار هذه البيانات ؟

يجب أن أتصل بضع صفحات مختلفة باستخدام نفس معرف.

هل كانت مفيدة؟

المحلول

نعم, فمن السهل نسبيا أن تفعل هذا.سوف تحتاج إلى إنشاء ترميز webtest ذلك.

في بلدي على سبيل المثال لدينا تسجيل الدخول بعد ذلك سيعود url بما في ذلك الدورة السلسلة.فقط بعد عن طريق تسجيل الدخول طلب post (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"));

أعتذر عن قانون بلدي يجري قاسيا لكنه كان مستنكر في المشروع ويتم سحبها من النسخة الأولى من برنامج - و أقول كان من السهل :)

أي اختبار الحمل ، اعتمادا على التطبيق الخاص بك قد تضطر إلى الخروج مع إجراء مخزن استدعاء لتوفير متميزة معلومات تسجيل الدخول في كل مرة اختبار تشغيل.

ملاحظة, لأن الاستجابة 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