Я пытался подключиться к веб-контроллеру напрямую для загрузки 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;
}