#c# #json.net #testrail
Вопрос:
Я уже реализовал интеграцию с Selenium-Testrail. Все было правильно до сегодняшнего дня, когда я продолжаю получать:
OneTimeSetUp: Система.Исключение InvalidCastException : Невозможно привести объект типа «Newton. Json.Linq.JObject» к типу » Newton.Json.Linq.Джаррей».
Вот строка кода, в которой происходит сбой:
JArray getListOfAllActiveTestRun = (JArray)client.SendGet($"get_runs/{ProjectId}");
Поскольку я предполагаю, что мне нужно иметь a JArray
, чтобы использовать его позже в цикле foreach (полный просмотр кода)
if (RunId == null)
{
JArray getListOfAllActiveTestRun = (JArray)client.SendGet($"get_runs/{ProjectId}");
foreach (JObject testRun in getListOfAllActiveTestRun)
{
bool isCompleted = Convert.ToBoolean(testRun["is_completed"]);
string lastTestRunId = testRun["id"].ToString();
string lastSuiteId = testRun["suite_id"].ToString();
int failedTestCount = testRun["failed_count"].Value<int>();
int untestedTestCount = testRun["untested_count"].Value<int>();
if (!isCompleted amp;amp; lastSuiteId.Equals(SuitId) amp;amp; failedTestCount > 0 || !isCompleted amp;amp; lastSuiteId.Equals(SuitId) amp;amp; untestedTestCount > 0) // we are checking that there is not finished testRun with suitId equal to this and failed tests and untested tests
{
RunId = lastTestRunId;
break;
}
}
}
Проверил решения, и большую часть времени я сталкивался с выбором JsonConvert.DeserializeObject
, но я не уверен, что это правильный намек в моем случае.
Изменить (JSON)
"runs":
{
"id":2874,
"suite_id":878,
"name":"[ENV: TEST] [BACKOFFICE] Automation Test Run - [20:02:55 PM]",
"description":null,
"milestone_id":null,
"assignedto_id":null,
"include_all":true,
"is_completed":false,
"completed_on":null,
"config":null,
"config_ids":[
],
"passed_count":171,
"blocked_count":0,
"untested_count":1,
"retest_count":0,
"failed_count":3,
"custom_status1_count":0,
"custom_status2_count":0,
"custom_status3_count":0,
"custom_status4_count":0,
"custom_status5_count":0,
"custom_status6_count":0,
"custom_status7_count":0,
"project_id":19,
"plan_id":null,
"created_on":1631901776,
"updated_on":1631901776,
"refs":null,
"created_by":124,
"url":"ssss"
}
Комментарии:
1. Не могли бы вы также поделиться с нами соответствующей частью json?
2. Вы имеете в виду это: элемент «клиент»? Отредактировано и добавлено 🙂
3. @Kermi: Нет. Json, возвращаемый в результате вызова
get_runs
.4. @Kermi: Это недопустимый json. Если мы добавим отсутствующие начало
{
и конец,}
чтобы сделать его действительным, то у вас есть объект json (JObject), а не массив json (JArray), поэтому приведение неверно.5. Что вам нужно, так это изменить приведение
JObject
и получить доступ к таким свойствам, какtestRun["runs"]["is_completed"]
.
Ответ №1:
С сегодняшнего дня я сталкиваюсь с той же проблемой-похоже, в API TestRail произошли изменения.
Из ссылки на API TestRail: «…Эти массовые конечные точки больше не будут возвращать массив всех сущностей, а вместо этого вернут объект с дополнительными полями разбиения на страницы и массивом до 250 сущностей.»
Источник: https://www.gurock.com/testrail/docs/api/reference/runs#getruns
Комментарии:
1. Вы устранили проблему? Это так, не могли бы вы дать мне подсказку с кодом?