Selenium: запуск кода Java с разными URL для трех сред - PullRequest
5 голосов
/ 12 июля 2019

У меня есть среда тестирования автоматизации на Java. Мне нужно, чтобы этот код работал в нескольких средах, таких как SIT, UAT и Prod, но все эти среды имеют разные URL.

sit-config.properties

hompepage = XXX

uat-config.properties

домашняя страница = ГГГ

Профиль Maven

<profiles>
    <profile>
        <id>sit</id>
        <activation>
            <property>
                <name>environment</name>
                <value>sit</value>
            </property>
        </activation>
    </profile>
    <!-- mvn -Denvironment=sit clean test -->

    <profile>
        <id>uat</id>
        <activation>
            <property>
                <name>environment</name>
                <value>uat</value>
            </property>
        </activation>
    </profile>

  </profiles>

Вопросы (РЕДАКТИРОВАТЬ):

  1. Как загрузить определенный файл свойств на основе теста среды?
  2. У меня есть пример для библиотеки Java Owner, но для тестирования, а не для Maven.

http://www.testautomationguru.com/selenium-webdriver-how-to-execute-tests-in-multiple-environments/

Пожалуйста, помогите. Благодарю.

Ответы [ 4 ]

3 голосов
/ 16 июля 2019

Сначала вы должны создать файл свойств с разными URL-адресами

Затем добавить программу чтения файлов конфигурации

public String applicationUrl_QA() {
        String applicationUrl = properties.getProperty("applicationUrl_QA");
        if(applicationUrl != null) return applicationUrl;
        else throw new RuntimeException("url not specified in the Configuration.properties file.");
    }

Затем вы можете настроить все среды, как показано ниже

if(Env.equalsIgnoreCase("QA")){
            if(URL.equalsIgnoreCase("CDMS_QA")){
                driver.get(configFileReader.applicationUrl_QA());
}

затем вы создаете отдельные XML-файлы, как показано ниже

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false" thread-count="5" verbose="1">

    <!--Values Chrome Firefox HLChrome HLFirefox HTMLUnit phantomJS-->
    <parameter name="browser" value="Firefox"/>

    <!--Values AdminURL StatementURL PatientURL-->
    <parameter name="URL" value="Value"/>

    <!--Values QA Dev Uat Prod -->
    <parameter name="Env" value="QA"/>
    <test name="AdminTests">
        <classes>
            <class name="tests.Test1"/>
        </classes>
         <classes>
            <class name="tests.test2"/>
        </classes>
    </test>
</suite>

Наконец, вы должны вызвать все xmls, используя один XML-файл

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false" thread-count="5" verbose="2">
<suite-files>
    <suite-file path="File1_QA.xml"/>
</suite-files>
    <suite-files>
        <suite-file path="File2_UAT.xml"/>
    </suite-files>
</suite>
3 голосов
/ 12 июля 2019

Мне пришлось решить аналогичную проблему.И вот как я подошел.

Шаг 1: Добавьте surefire plugin в ваш POM.xml в разделе build > plugin.

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <systemPropertyVariables>
                    <TestEnvironment>local</TestEnvironment>
                </systemPropertyVariables>
                <!-- <suiteXmlFiles>
                    <suiteXmlFile>here goes your testng xml</suiteXmlFile>
                </suiteXmlFiles> -->
            </configuration>
        </plugin>

Здесь, TestEnvironment - это настраиваемое системное свойство, которое вы настраиваете, его можно получить позже в вашем коде.

Примечание: Если вы хотите запустить определенный testng xml, снимите комментарий <suiteXmlFiles> пометьте и укажите путь к вашему XML-файлу testng.

Шаг 2: Добавьте код, чтобы получить системное свойство и прочитать его из соответствующего файла свойств.

        // Assuming your properties files are in the root directory of your project.
        String configFileName = "./%s-config.properties";
        String EnvironmentName = System.getProperty("TestEnvironment");
        System.out.println("TestEnvironment: " + EnvironmentName);

        configFileName = String.format(configFileName, EnvironmentName);
        properties = new Properties();
        properties.load(new FileInputStream(new File(configFileName)));

Шаг-3: Передать TestEnvironment в mvn команду

mvn clean test -DTestEnvironment=sit

Эта команда прочитает ваш файл sit-config.properties и выполнит тесты.Для чтения из разных файлов свойств введите в командной строке другое значение.

Пожалуйста, дайте мне знать, если это ответило на ваши вопросы.

0 голосов
/ 21 июля 2019

В соответствии с примером , который вы дали, ниже приведена инструкция о том, что вы должны сделать для выполнения теста из Maven:

1) Ведение отдельного файла свойств для каждой среды в src / test / resourcces

2) Добавьте зависимость «владелец» в свой проект Maven.

3) Создайте интерфейс «Environment», как показано в примере с:

    @Sources({
    "classpath:${env}.properties"
    })

4) Во всех объектах test и page вы будете использовать объект testEnvironment:

public class EnvironmentTest {

    Environment testEnvironment;

    @Test
    public void functionalTest() {
        System.out.println(testEnvironment.url());
        System.out.println(testEnvironment.getDBHostname());
        System.out.println(testEnvironment.getDBPassword());
    }

    @BeforeTest
    public void beforeTest() {
        String environemnt = System.getProperty("environment"); //here you read your environment name
        ConfigFactory.setProperty("env", environemnt); //here you use your environment name for reading proper file
        testEnvironment = ConfigFactory.create(Environment.class); //here we create an instance of the Environment interface & access the property file
    }
}

5) Запустите вашу программу, используя Maven, где вы вводите имя среды для вашего теста:

clean test -Dtest=EnvironmentTest -Denvironment=qa
0 голосов
/ 12 июля 2019

Я предлагаю вам использовать Spring Boot для использования разных файлов конфигураций (профилей). Но, если вам нужно только передать параметр URL во время выполнения, попробуйте следующее:

В вашем коде:

public class Url {

    public static String host;

    static {
        Url.host = System.getProperty("mysystem.property.host");
    }
}

И затем, когда вы выполните тесты, передайте свойство следующим образом:

mvn clean test -Dmysystem.property.host=yourUrl

...