Передайте аргументы тестам в Azure Devops - PullRequest
1 голос
/ 29 апреля 2019

У меня есть проект API, на котором я хотел бы запустить несколько интеграционных тестов в конвейере выпуска Azure.

  1. Сборка проекта.
  2. Создать релиз.
  3. Развернуть релиз в слот.
  4. Запуск интеграционных тестов NUnit для слота. Это влечет за собой http запросы к слоту.
  5. Если тесты пройдены, заменить производственный слот на проверенный слот.

Я застрял на шаге 4. В Visual Studio легко передавать аргументы в тестовое устройство.

[TestFixture(arguments: "https://urltomyslot.azurewebsites.net")]
public class CachedClientApiTokenManagerTests
{
    public CachedClientApiTokenManagerTests(string authority)
    {
        _authority = authority;
    }

    private readonly string _authority;

    // Runs tests using the url
}

Чего я не знаю, как это делать, это передавать аргументы от Devure на основе среды. Я использую пакет NUnit3TestAdapter, и он работает нормально, но аргументы - точка отсчета. Если мы делаем это в нашей лабораторной среде, переданный URL отличается от промежуточного или рабочего URL.

Как настроить это в DevOps Azure с помощью аргументов?

1 Ответ

1 голос
/ 29 апреля 2019

Вы можете определить среду в переменных:

enter image description here

Затем прочитайте переменные в коде C # следующим образом:

string environment = Environment.GetEnvironmentVariable("environment", EnvironmentVariableTarget.Process);

Теперь зависит от значения environment, создайте URL и запустите тесты.

Например, я создал небольшое консольное приложение:

class Program
{
    static void Main(string[] args)
    {
        string environment = Environment.GetEnvironmentVariable("environment", EnvironmentVariableTarget.Process);
        if (environment == "prod")
        {
            Console.WriteLine("We are in production :)");
        }
    }
}

Я настроил переменную:

enter image description here

И я запускаю файл .exe, в выводе я вижу напечатанное We are in production :):

enter image description here

...