dockerfile文件 FROM openjdk:8-jre-slim
WORKDIR /usr/share/tag ADD target/selenium-docker.jar selenium-docker.jar
ADD target/selenium-docker-tests.jar selenium-docker-tests.jar ADD target/libs libs
ADD src/test/resources/TestSuite/dev_env/testng.xml testng.xml ENTRYPOINT java -cp selenium-docker.jar:selenium-docker-tests.jar:libs/* org.testng.TestNG testng.xml
testng.xml文件
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd" >
<suite name="Suite1" verbose="1" parallel="tests" thread-count="2">
<parameter name="env" value="dev_env"/>
<parameter name="system" value="local"/>
<listeners>
<listener class-name="com.testlisteners.TestListeners"/>
</listeners>
<test name="FireFoxTests">
<parameter name="browser" value="firefox"/>
<classes>
<class
name="com.tests.HomePageTest">
<methods>
<include name= "testMultiSelectDropdown"/>
</methods>
</class>
</classes>
</test>
<test name="ChromeTests">
<parameter name="browser" value="chrome"/>
<classes>
<class name="com.tests.HomePageTest">
<methods>
<include name= "testMultiSelectDropdown"/>
</methods>
</class>
</classes>
</test>
</suite>
基本测试
@BeforeSuite
@Parameters({"env", "system"})
public void preSetup(String env, String system) throws IOException {
this.env = env;
this.system = system;
logger.info("Before Suite is called...");
oneInstance.add(KEYS.ENVIRONMENT, env);
oneInstance.add(KEYS.SYSTEM, system);
}
@BeforeMethod(alwaysRun = true)
@Parameters({"browser"})
public void setup(String browser, Method method) throws IOException {
logger.info("Before Method is called..");
String toLowercaseBrowser = browser.toLowerCase();
this.browser = toLowercaseBrowser;
logger.info(toLowercaseBrowser + " browser will be launched.");
ExtentTestManager.startTest(method.getName(), method.getName() + " - " + browser.toUpperCase());
if (oneInstance.getAsString(KEYS.SYSTEM.name()).equalsIgnoreCase("local")) {
switch (toLowercaseBrowser) {
case "chrome":
WebDriverManager.chromedriver().setup();
driver.set(new ChromeDriver(setChromeOptions()));
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
break;
case "firefox":
WebDriverManager.firefoxdriver().setup();
driver.set(new FirefoxDriver());
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
break;
default:
throw new InvalidArgumentException("browser : " + browser + " is invalid.");
}
} else {
instantiateRemoteWebDriver(toLowercaseBrowser);
getDriver().manage().window().fullscreen();
getDriver().get(setAppURL());
}
}
我已经使用maven将所有依赖项复制到libs包中,并且我已经验证了我为main和test编译的所有类都存在于selenium-docker.jar和selenium-docker-tests.jar中
我为创建selenium-docker.jar和selenium-docker-tests.jar运行的命令: mvn clean package -DskipTests
我用于创建docker映像的命令: docker build -t selenium_docker:1.0 .
运行测试命令: docker run selenium_docker:1.0
输出
[调试]2020-01-24 16:50:48.989[main]oneinstance-oneinstance为空初始化它。。。。
[信息]2020-01-24 16:50:49.123[main]basetest-在调用套件之前。。。
[信息]2020-01-24 16:50:49.129[testng-tests-2]testlisteners-我正在使用onstart方法chrometests
[信息]2020-01-24 16:50:49.131[testng-tests-1]testlisteners-我正在使用onstart方法firefoxtests
[信息]2020-01-24 16:50:49.134[主要]basetest-内部驱动程序清理
=========================================================套房1
运行的测试总数:0,通过次数:0,失败次数:0,跳过次数:0
在输出中,我们可以在调用suite之前看到。。。但在调用方法之前。。缺少
1条答案
按热度按时间wqlqzqxt1#
我通过更正项目中的文件路径解决了这个问题。在本地运行时,我使用了基于windows的路径,但由于我的测试是在unix系统中运行的,所以出现了一个异常,因为在更正这些路径后,测试无法工作,所以工作正常。我将(\替换为/),因此它可以在windows和unix系统中工作。