t.me/atinfo_chat Telegram группа по автоматизации тестирования

Как environment.properties вложить в allure-results после выполения тестов

Теги: #<Tag:0x00007f7481bd1620> #<Tag:0x00007f7481bd1558> #<Tag:0x00007f7481bd1490> #<Tag:0x00007f7481bd13c8>

Есть проект Maven. Подключил Allure репорт.Создал файл envirinment.properties. После выполнения тестов перетаскиваю файл в папку allure-results, с которой генерится отчет. Как сделать чтоб после выполнения тестов этот файл автоматически попадал в папку allure-results, или просто не удалялся после каждого прогона тестов?

  1. Делаем метод который создает файл envirinment.properties в папке allure-results и записывает туда значения
String path = System.getProperty("allure.results.directory");
  try {
            Properties props = new Properties();
            FileOutputStream fos = new FileOutputStream(path + "/environment.properties");
            props.setProperty("property_name", "property_value");
            props.store(fos, "See https://github.com/allure-framework/allure-app/wiki/Environment");
            fos.close();

        } catch (Exception e) {
            System.err.println("IO problem when writing allure properties file");
            e.printStackTrace();
        }
  1. Дергаем этот метод в AfterSuite

Кстати 3 минуты гугления дают еще такую штуку вот удобую.

Я просто создал шаблон xml, и кодом в одном тесте беру шаблон, заполняю его, потом копирую в allure-results

<environment>
  <parameter>
    <key>Browser, version</key>
    <value>Browser, version</value>
  </parameter>
  <parameter>
    <key>UI version</key>
    <value>UI version</value>
  </parameter>
  <parameter>
    <key>Monolith version</key>
    <value>Monolith version</value>
  </parameter>
  <parameter>
    <key>Bank URL</key>
    <value>Bank URL</value>
  </parameter>
  <parameter>
    <key>Client URL</key>
    <value>Client URL</value>
  </parameter>
  <parameter>
    <key>Runner platform</key>
    <value>Runner platform</value>
  </parameter>
  <parameter>
    <key>Репозиторий автотестов</key>
    <value>ссылка на репозиторий</value>
  </parameter>
</environment>
        public static void SetAllureEnvironment()
        {
            Directory.CreateDirectory(ProjectEnvironment.AllureResults);

            if(TestContext.CurrentContext.Test.Properties.Get("Description").ToString().Contains("Успешная авторизация клиента"))
            {
                File.Delete(ProjectEnvironment.AllureResults + "/environment.xml");
                File.Delete(ProjectEnvironment.AllureResults + "/categories.json");

                XmlDocument env = new XmlDocument();

                env.Load(ProjectEnvironment.Allure + "/environment.xml");

                XmlElement root = env.DocumentElement;

                ICapabilities capabilities = ((RemoteWebDriver)BaseSteps.Browser).Capabilities;

                var parameter = root.SelectSingleNode("//key[text() = 'Browser, version'] / ancestor::parameter / value").FirstChild;

                parameter.InnerText = capabilities.GetCapability("browserName").ToString() + 
                            ", " + capabilities.GetCapability("browserVersion").ToString();

                if (BaseSteps.DBOUIversion.Contains("1."))
                {
                    parameter = root.SelectSingleNode("//key[text() = 'UI version'] / ancestor::parameter / value");
                    parameter.InnerText = BaseSteps.DBOUIversion;
                }

                parameter = root.SelectSingleNode("//key[text() = 'Monolith version'] / ancestor::parameter / value");
                parameter.InnerText = BaseSteps.DBOMonolithVersion;

                parameter = root.SelectSingleNode("//key[text() = 'Bank URL'] / ancestor::parameter / value");
                parameter.InnerText = URLs.Bank;

                parameter = root.SelectSingleNode("//key[text() = 'Client URL'] / ancestor::parameter / value");
                parameter.InnerText = URLs.Client;
                
                parameter = root.SelectSingleNode("//key[text() = 'Runner platform'] / ancestor::parameter / value");
                parameter.InnerText = capabilities.GetCapability("platformName").ToString();

                env.Save(ProjectEnvironment.AllureResults + "/environment.xml");

                File.Copy(ProjectEnvironment.Allure + "/categories.json", ProjectEnvironment.AllureResults + "/categories.json");
            }