Некоторые тесты Nunit не проходят в группах, но проходят при индивидуальном запуске в других средах - PullRequest
0 голосов
/ 30 января 2020

Я пытался подключиться к веб-контроллеру напрямую для загрузки CSV-файлов, используя Nunit, Specflow и Restsharp, но тесты не проходят в группах, но проходят по отдельности. Еще одна вещь, которую мы заметили, это то, что они работают локально, как при запуске приложения в качестве локального хоста, но не в других средах. Все остальные тестовые группы проходят в этом env. Я видел пару постов, в которых предлагалось не использовать свойства stati c для хранения значений, но я тоже это пробовал. мы также добавили задержку между потоками, но она не работает либо

, пожалуйста, кто-нибудь может помочь с этим или кто-то, кто сталкивался с этим? Ошибка, которую я получаю - это тайм-аут. если вы получаете доступ к нему из браузера, проблем не возникает

Я использую контекстную инъекцию для передачи значений друг от друга в файл step def. Вот как выглядит код

public (IRestResponse response,string RVtoken) GetRVtoken()
        {
            var client = new RestClient(ConfigurationManager.AppSettings["Web_URL"] +"Account/SignIn");
            var request = new RestRequest(Method.GET);
            IRestResponse response = client.Execute(request);
            var html = new HtmlDocument();
            html.LoadHtml(response.Content.ToString());
            var RVtoken = html.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]/div[1]/form[1]/input[1]/@value[1]").Attributes["value"].Value;
            return (response, RVtoken);
        }

public (CookieContainer cookieContainer, Uri target) GetAspxAuthToken(string email,string password, IRestResponse SignInResponse, string RVtoken)
        {
            string ReturnUrl = ConfigurationManager.AppSettings["Web_URL"] + "Account/SignIn?ReturnUrl=%2F";
            var client = new RestClient(ReturnUrl);
            CookieContainer cookieContainer = new CookieContainer();
            HttpWebRequest httpRequest = (HttpWebRequest)WebRequest.Create(ReturnUrl);
            httpRequest.CookieContainer = cookieContainer;
            httpRequest.Method = Method.POST.ToString();
            string postData = string.Format("Email={0}&Password={1}&__RequestVerificationToken={2}&RememberMe=false", email, password, RVtoken);
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
            httpRequest.ContentType = "application/x-www-form-urlencoded";
            httpRequest.ContentLength = byteArray.Length;
            Uri target = new Uri(ReturnUrl);
            httpRequest.CookieContainer.Add(new Cookie(SignInResponse.Cookies[0].Name, SignInResponse.Cookies[0].Value) { Domain = target.Host });
            httpRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
            Stream dataStream = httpRequest.GetRequestStream();
            dataStream.Write(byteArray, 0, byteArray.Length);
            HttpWebResponse myresponse = (HttpWebResponse)httpRequest.GetResponse();
            return (cookieContainer,target);


        }




public IRestResponse Uploadflex(string flexType,string filepath,IRestResponse SignInResponse)
        {
            RestClient newclient = newclient = new RestClient(ConfigurationManager.AppSettings["Web_URL"] + "audiences/" + flexType + "/upload?utc=1580117555355");
            var newrequests = new RestRequest(Method.POST);
            newrequests.AddFile("targetAreaFile",filepath);
            newrequests.AddCookie(SignInResponse.Cookies[0].Name, SignInResponse.Cookies[0].Value);
            newrequests.AddCookie(User.cookieContainer.GetCookies(User.target)[".aspxauth"].Name.ToString(), User.cookieContainer.GetCookies(User.target)[".aspxauth"].Value.ToString());
            newrequests.AddParameter("name", "targetAreaFile");
            newrequests.AddParameter("Content-Type", "application/vnd.ms-excel");
            newrequests.AddParameter("Content-Disposition", "form-data");
            var response = newclient.Execute(newrequests);
            return response;
        }

1 Ответ

0 голосов
/ 17 февраля 2020

хорошо, поэтому проблема была в том, что я создавал разные rnet сессии для этих тестов, но почему-то куки не очищались, поэтому я поместил все тесты в одну и ту же сессию, и она работает волшебным образом.

...