Присоединение файла журнала к тесту Azure Devops Test Run

Я пытаюсь прикрепить файл журнала, созданный мной во время выполнения автоматических тестов в конвейере выпуска Azure. Я запускаю автоматизированные тесты пользовательского интерфейса с использованием селена и MSTest. Первоначально у меня создалось впечатление, что я могу прикрепить файл в методе AssemblyCleanup MSTest, используя объект TestContext. Однако кажется, что TestContext можно использовать только для прикрепления результатов к отдельным тестам? Немного поискав в Интернете, я нашел этот вызов API:

POST https://dev.azure.com/ {Organization} / {Project} / _ apis / test / Запускает / {runId} /attachments?api-version=5.1-preview.1

в документации Microsoft: https://docs.microsoft.com/en-us/rest/api/azure/devops/test/attachments/create%20test%20result%20attachment?view=azure-devops-rest-5.1

Однако я не понимаю, как получить тестовый runId в моем тестовом коде или как пройти аутентификацию с помощью OAuth2. Вот насколько я смог использовать RestSharp для вызова;

RestClient httpClient = new RestClient("");
//I have no clue if this is even close to right with the OAuth stuff
httpClient.Authenticator = new RestSharp.Authenticators.OAuth2AuthorizationRequestHeaderAuthenticator("");
RestRequest request = new RestRequest(Method.POST);
APIRequestBody body = new APIRequestBody
{
    //not sure if this is the right stream
    Stream = "",//not sure what to put in here
    FileName = "TestRun.log",
    Comment = "Test run log file.",
    AttachmentType = "GeneralAttachment"
};
request.AddJsonBody(body);
IRestResponse response = httpClient.Execute(request);

Любая помощь была бы действительно замечательной ... Я здесь немного не в себе.


person MitchelB123    schedule 05.12.2019    source источник
comment
stackoverflow.com/a/30137735/5380023   -  person Pankaj Devrani    schedule 06.12.2019
comment
Привет @ MitchelB123 Вы пробовали код ниже, как все прошло? Пожалуйста, дайте мне знать, если возникнут вопросы.   -  person Levi Lu-MSFT    schedule 11.12.2019


Ответы (1)


Ниже приведен пример кода, показывающий, как вызвать restful api в C # HttpClient с использованием токена личного доступа. Чтобы получить токен личного доступа, выполните следующие действия: здесь.

public static async void GetProjects()
{
    try
    {
        var personalaccesstoken = "PAT_FROM_WEBSITE";

        using (HttpClient client = new HttpClient())
        {
            client.DefaultRequestHeaders.Accept.Add(
                new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic",
                Convert.ToBase64String(
                    System.Text.ASCIIEncoding.ASCII.GetBytes(
                        string.Format("{0}:{1}", "", personalaccesstoken))));

            using (HttpResponseMessage response = await client.GetAsync(
                        "https://dev.azure.com/{organization}/_apis/projects"))
            {
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseBody);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

Приведенный выше пример взят из документ Microsoft. Вы можете это проверить.

Для тестового runId вам может потребоваться вызвать ниже тестовые запуски api, чтобы получить список тестовых запусков, а затем извлечь текущий runid из ответа.

GET https://dev.azure.com/{organization}/{project}/_apis/test/runs?api-version=5.1

Надежда выше помогает.

person Levi Lu-MSFT    schedule 09.12.2019