运行自动化测试,借助TestNG,
在build.xml 里定制 test 任务:
<!--parameter xml file -->
<import file="build_test_targets.xml"/>
<!-- testng task define -->
<testng haltonfailure="true" failureproperty="test.failed"
configFailurePolicy="skip" timeout="${test.timeout}" outputdir="build/brazil-unit-tests"
haltonskipped="false">
<env key="CORAL_CONFIG_PATH" value="${bp:run.coralconfig}" />
<classpath>
<pathelement path="${classes.dir}" />
<pathelement path="${testclasses.dir}" />
<pathelement path="${bp:run.classpath}" />
<pathelement path="${bp:testrun.classpath}" />
</classpath>
<xmlfileset dir="${testclasses.dir}" includes="${test.testngxmlfile}" />
<!-- <jvmarg value="-Dlog4jConfig=${basedir}/configuration/log4j.conf"></jvmarg> -->
<jvmarg value="-DtestEnvironmentFile=${testEnvironmentFile}"></jvmarg>
<jvmarg value="-Dg2s2version=${g2s2version}"></jvmarg>
<jvmarg value="-DbrowserName=${browserName}"></jvmarg>
<jvmarg value="-Ddevice-type=${device-type}"></jvmarg>
<jvmarg value="-DappActivity=${appActivity}"></jvmarg>
<jvmarg value="-DappPackage=${appPackage}"></jvmarg>
<jvmarg value="-Dapp-wait-activity=${app-wait-activity}"></jvmarg>
<jvmarg value="-Ddevice=${device}"></jvmarg>
<jvmarg value="-DdeviceName=${deviceName}"></jvmarg>
<jvmarg value="-DplatformName=${platformName}"></jvmarg>
<jvmarg value="-Dendpoint=${endpoint}"></jvmarg>
<jvmarg value="-DjobType=${jobType}"></jvmarg>
<jvmarg value="-DplatformName=${platformName}"></jvmarg>
<!-- <jvmarg value="-DtestDetailsFile=${testDetailsFile}"></jvmarg> -->
<jvmarg value="-DautomationName=${automationName}"></jvmarg>
<jvmarg value="-DnewCommandTimeout=${newCommandTimeout}"></jvmarg>
<jvmarg value="-Ddevice=${device}"></jvmarg>
</testng>
在另外一个xml(build_test_targets.xml) 文件里填写 被测的类 和测试的参数,这个文件之前被import 进build.xml 里。 用import 方法可以像套娃一样,随意嵌套,灵活定制参数
<project name="xxx_project" basedir=".">
<target name="run-xxx-TEST-iosBrowser">
<antcall target="run-test-common-iosBrowser">
<param name="test.testngxmlfile" value="xxx_TestSuite_IOSBrowser_config.xml" />
<param name="test.timeout" value="1800000" />
</antcall>
</target>
真正运行selenium 测试的testng 传入函数的参数,放在 xxx_TestSuite_IOSBrowser_config.xml 里, 这个是你自动化框架定义的
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Detail_IOS_Safari" thread-count="1" parallel="methods"
verbose="2" preserve-order="true">
<parameter name="locale" value="CN" /><!-- UK/DE/US -->
<parameter name="stage" value="Prod" /><!-- BETA/GAMMA/PROD -->
<parameter name="driver_server_name" value="none" />
<parameter name="driver_server_port" value="0" />
<parameter name="test_url" value="https://cntech-web-preflight-cn.com/gp/homepage.html"></parameter>
<parameter name="test_browser" value="safari_ios"></parameter>
<parameter name="test_retires" value="3"></parameter>
<parameter name="test_weblabs" value="GLOBAL_STORE_FLAG_40127:T1|GLOBAL_STORE_39815:T1|PHASE2_51123:C|57927:C"></parameter>
<parameter name="test_screenshotflag" value="failure"></parameter>
<parameter name="test_page_timeout_inseconds" value="200"></parameter>
<parameter name="test_element_timeout_inseconds" value="10"></parameter>
<parameter name="report_from" value="cntech-ags-testing@amazon.com"></parameter>
<parameter name="report_summary_to" value=""></parameter>
<parameter name="report_detail_to" value=""></parameter>
<parameter name="report_screenshot_to" value=""></parameter>
<parameter name="only_send_failed_report" value="true"></parameter>
<parameter name="report_tim_hashcode" value=""></parameter>
<parameter name="report_pipeline_name" value="xxx-horizonte-prod"></parameter>
<parameter name="upload_to_analyse" value="true"></parameter>
<test name="Detail page of an ASIN">
<groups>
<run>
<include name="mobile" />
</run>
</groups>
<classes>
<class name="test.desktop.detailpage.DetailPageTest" />
</classes>
</test>
</suite>
你的框架就是把你的参数传进你的函数里,你的函数要处理这些参数,然后产生相应的assert ion 判断
//需要下载 jcommander.jar, 否则就会报错: 参考:http://www.jcommander.org/#Download
testng-execution:
[testng] java.lang.NoClassDefFoundError: com/beust/jcommander/ParameterException
// testng tag
need add class path into testng tag, otherwise, will report error cannot find test class **Test
//得要学会如何在 ant 中 debug ,不然有你苦头吃的
You can do this in Eclipse with these steps:
Be sure to open your build file in the ANT editor (right click on build file -> Open with -> Ant editor).
Double click in the left margin of your build file where you want breakpoint.
Open the Ant view (Window -> Show view -> Ant).
If the build file isn't in the view then you can simply add it.
Once added right click on the ant target you want to run and select Debug as -> Ant build
The Debug perspective should open up and the process should stop at your breakpoint where you can step through it
Sometimes it is required to set the arguments at the time of debugging. It can be set by selecting: Debug as -> Ant build. And then need to select Arguments. And then values can be entered as: -Dprop.name=property value
//之前遇到 “TestNG [Error] Cannot instantiate class xxxTest”
原因是我把 src 和 tst 下的类分别编译到两个目录下,如下:
<javac srcdir="${src}" destdir="${src.classes.path}"
<javac srcdir="${tst}" destdir="${tst.classes.path}"
都编译到一个目录下,就没有问题了,也就是把上面两个 destdir 合成一个
// 遇到错误 [testng] Configuration Failures: 1, Skips: 2
一直找不到原因,后来网上找到高人指点,去看 test-output 里的test report, 一看,果然发现exception log
// 用TestNg @Parameter 传参数传不进去,后来发现是函数没有把传进来的参数存为 内部变量
// Jenkins 设置, 需要增加 JDK 时怎么办?
在 Global Tool Configuration 里可以增加 JDK ,参考: http://blog.csdn.net/anning_88/article/details/50635940
我采取了另外一种方法,在shell 里增加环境变量的设置
// 用 ant -f build.xml 运行testng 测试脚本, 遇到问题,莫名其妙的取不到参数,后来,log只提示发现一个testclass 的error, 而编译过程中该类没有问题,虽然调用testng 参数,但是没有用,在其他类中也没有依赖, 但是testng 把调用它的类无法争取传递参数认为是失败的。后来把这个类删掉,测试运行正常了
// 测试代码中要把无用的import 都去掉,否则testng 也会检测import 的类是否存在或 是否争取的传递testng 参数,否则测试失败
// 如果打开太多的窗口,一次删掉进程用 TaskKill
taskkill /IM chrome.exe /F 强制删除
// xpath 定位如果很多行文字,怎么直接定位到文字相关控件
用text() 获得文字,但有时text()不好使, 就用., 比如 //span[contains(.,'资讯管理')],参考http://www.cnblogs.com/sschen/p/3612503.html
// 出错
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
这个主要是element 过期,重新定位一下。我处理是增加一个waitFroElementPresent函数
driver.waitForElement(Xpath_ServiceRequest_Wizard1_NextStep_ButtonGroup, 5000);
//出错 /org.openqa.selenium.NoAlertPresentException: no alert open
need Add wait like below:
try {
WebDriverWait wait = new WebDriverWait(driver, 2);
wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
System.out.println(alert.getText());
alert.accept();
Assert.assertTrue(alert.getText().contains("Thanks."));
} catch (Exception e) {
//exception handling
}
// 如何快速测试一个API函数
有时候 JAVA API 文档说的不是很清楚,想要快速写个API函数,试验一下,怎么办?就是拷贝该函数,到某个目录下, eclipse 就会快速给你用该函数建一个Snippet APPLICATION ,这样就方便测试了
分享到:
相关推荐
Jenkins和TestNG搭建一个自助式的自动化测试平台。在软件业十分成熟的今天,敏捷(Agile)开发在业界日益流行,而面临的挑战也日益增多,不断变化的用户需求、缩短的开发周期、频繁的部署上线、复杂的产品架构和团队...
TestNG-Abbot源自于两个成功的开发人员测试框架的结合:Abbot和TestNG。Abbot是一种JUnit扩展框架,主要目的是使GUI组件实现编程隔离,它还提供了一种验证GUI行为的简易方法。TestNG-Abbot是一种测试框架,它为GUI...
E:\最全面的Java接口自动化测试实战\第10章 项目实战接口开发SpringBoot E:\最全面的Java接口自动化测试实战\第11章 数据持久层框架MyBatis的应用 E:\最全面的Java接口自动化测试实战\第12章 MyBatis+MySQL实现用例...
E:\最全面的Java接口自动化测试实战\第10章 项目实战接口开发SpringBoot E:\最全面的Java接口自动化测试实战\第11章 数据持久层框架MyBatis的应用 E:\最全面的Java接口自动化测试实战\第12章 MyBatis+MySQL实现用例...
基于java的testNG框架开发的接口自动化测试框架,使用maven项目,基于jdk8
本文主要介绍了关于docker利用selenium+testng实现web自动化的相关内容,下面话不多说了,来一起看看详细的介绍吧 Windows下selenium+testng的web自动化环境搭建 做过自动化的人,肯定对selenium web环境的搭建非常...
一般来说,我们应该让需求可测试,让测试自动化,让自动化测试变的容易。理念一定要先进,工具一定要先进。将这些先进的理念和工具应用于项目中,提高生产效率,这就是创新的意义所在。(声明:本段不是原创!) ...
6.(第三层次)熟练掌握上面技巧之后,开始学习怎么将页面元素与代码分离,学习数据驱动(TestNG),以及怎么样结合Excel去做自动化测试。 7.(第四层次)学习持续集成的方法,怎么样将自动化测试更加“自动化...
TestNG是一个开源自动化测试框架;TestNG表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展。它的灵感来源于JUnit。它的目的是优于JUnit,尤其是在用于测试集成多类...
移动应用测试Appium书籍(9本)目录知识点整理(思维导图加图).rar 根据如下9本移动应用测试、Appium书籍整理: ...2020年《全栈自动化测试实战——基于TestNG、HttpClient、Selenium和Appium》
随着自动化办公的发展,将构建部署及测试都自动化将极大地节约劳动成本。在此我们采用Jenkins实现自动化构建与部署。Jenkins 是一个可扩展的持续集成引擎。 主要用于: 持续、自动地构建/测试软件项目。监控一些定时...
o2o-chengdu-test-webdriver 对webdriver进行二次开发,实现将测试用例写入excel中,用testng进行执行
传统的自动化测试更关注产品UI 层的自动化测试,而分层的自动化测试倡导产品开发的不同阶段(层 次)都需要自动化测试。 相信测试同学对上面的金字塔并不陌生,这个就是产品开发各个同阶段所对应的测试!随然这个...
1. 支持多语言多框架集成:包括java的testng、junit单元测试框架,和python的pytest等框架集成,满足当前行业里主流测试开发工程师手撕的自动化测试框架集成测试报告需求。 2. Allure测试报告支持中文、英文切换,且...
不建议别人下载,因为自己练习的代码,就是给自己留个备案以后翻看的
Gauge: 轻量级的跨平台测试自动化工具,可以以业务语言编写测试用例。 用例生成 graphwalker: 基于模型的测试用例生成框架 PICT: 微软公司开发的pairwise testing的用例生成工具 平台,用例和bug管理 TestLink: 开源...
Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于...
使用Selenium,cumul-java,testng,maven,phantomjs的行为驱动的开发自动化框架 使用的工具和技术: 语言:Java 8 测试框架:Testng BDD框架:Cucumberjvm 自动化工具:Selenium Webdriver 构建工具:Maven ...