当前位置: 首页 > 知识库问答 >
问题:

Selenium:为三种环境运行具有不同URL的Java代码

林君博
2023-03-14

我有一个Java自动化测试框架。我需要这个代码在多个环境下运行,比如SIT、UAT和Prod,但所有这些环境都有不同的URL。

sit-config.properties

首页=XXX

uat配置。属性

首页=YYY

马文简介

<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所有者库的例子,但是测试不是Maven。

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

请帮忙。谢谢

共有3个答案

云何平
2023-03-14

根据您给出的示例,下面有一条指令,说明从Maven执行测试需要做什么:

1) 在src/test/resourcces中为每个环境维护一个单独的属性文件

2)在Maven项目中添加所有者依赖项。

3) 创建界面“环境”,如示例所示:

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

4)在整个测试和页面对象中,您将使用test环境对象:

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
魏兴邦
2023-03-14

我必须解决一个类似的问题。这是我如何接近的。

步骤1:在POM. xml下添加surefire插件

        <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,请取消注释

第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:将Test环境传递给mvn命令

mvn clean test -DTestEnvironment=sit

此命令将从您的sit-config.properties文件中读取并执行测试。要从不同的属性文件中读取,请在命令行中传递不同的值。

如果这回答了你的问题,请告诉我。

夏侯航
2023-03-14

首先你必须创建属性文件与您的不同网址

然后添加配置文件读取器

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("_QA")){
                driver.get(configFileReader.applicationUrl_QA());
}

然后,您必须像下面这样创建单独的XMLs

<?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>

最后,必须使用一个xml文件调用所有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>
 类似资料:
  • 我是一个使用NIFI的大一新生。下面的NiFi dataflow从固定URL上的GET请求中获取数据,但是我的endpoint有一组参数来获取部分数据,例如页面ID。我希望避免为稍微不同的请求URL创建相同的工作流。 在API中,我可以请求可用的页面列表,我希望使用这样的请求的结果开始循环下面的工作流。我该怎么做??

  • 我正在为我的QA项目做研究,我想知道空手道是否能够处理某些用例。基本上,我需要为不同的环境(本地、临时、生产)运行测试。我从文档中了解到,这不是一个问题,因为有了karate-config.js和karate-config-env.js。 问题从执行本身开始。每个环境对于3个不同的国家都有不同的URL,所以实际上总共有9个URL。此外,由于开发过程的原因,某些功能并不是在所有国家同时部署的。所以我

  • 问题内容: 我试图用来创建我的,以确保我的构建/项目的质量。该项目也需要使用和。一切在我的本地计算机上都可以正常运行,但是现在我正在尝试使环境一致,可重现。当我尝试在新的虚拟机中运行时,会中断一个在本机中正常运行但 不在 新vm中运行的。 我检查了版本,,,(其)一切都是一样的。但是,我的Maven项目在此测试中失败了。 我在这里想念什么?任何想法,建议都会受到赞赏,因为我现在还没有想法,到目前为

  • 问题内容: 我目前在“开发”框中安装了Jenkins实例。这样可以很好地构建并且可以毫无问题地部署到我们的开发环境中。 在构建过程中,我的项目使用了一个包含诸如数据库连接URL之类的详细信息的属性文件(诸如此类的详细信息显然会因我所指向的环境而异)。 我想知道的是配置项目的最佳方法是什么,以便当我想将Jenkins构建的WAR文件发布到Production中时,它包含Production属性而不是

  • 我刚刚下载了Eclipse并尝试运行它,它给了我这个错误消息: 错误:打开注册表项'Software\JavaSoft\Java运行时环境 到我得到: java版本“1.8.0_231” Java(TM)SE运行时环境(构建1.8.0_231-B11) Java HotSpot(TM)64位服务器VM(构建13.0.1+9,混合模式,共享) 我使用的是Windows 10 Pro EclipseI

  • Linux运行环境 QEMU用于模拟一台x86计算机,让ucore能够运行在QEMU上。为了能够正确的编译和安装 qemu,尽量使用最新版本的qemu,或者os ftp服务器上提供的qemu源码:qemu-1.1.0.tar.gz)。目前 qemu 能够支持最新的 gcc-4.x 编译器。例如:在 Ubuntu 12.04 系统中,默认得版本是 gcc-4.6.x (可以通过 gcc -v 或者