工程依赖 TestNG 框架。 测试报告Allure。 支持 dubbo、restful 接口.
TestNG在线资料:
1.官网: https://testng.org/doc/index.html
如果需要自定义监听器,则在testng.xml中添加listeners配置。如下:
<listeners>
<listener class-name="lj.study.test.MyIMethodInterceptor"/>
</listeners>
以调用open-service-api服务为例:
2.1 首先添加maven依赖:
<dependency>
<groupId>com.lj.demo</groupId>
<artifactId>open-service-api</artifactId>
<version>1.0.1-SNAPSHOT</version>
</dependency>
2.2 然后需要在 test/resources/dubbo-remote-test.xml 中添加对应的引用,如下:
<dubbo:reference id="userService" interface="com.lj.open.api.UserService" timeout="10000" retries="0" version="1.0"/>
<dubbo:reference id="appService" interface="com.lj.open.api.AppService" timeout="10000" retries="0" version="1.0"/>
2.3 使用时引用方式如下:
@Autowired
private AppService appService;
注意:此方式引入,idea会提示错误:Could not autowire. No beans of 'AppService' type fund.
不用管,程序可以正常运行。
可以使用已经封装了的HTTP接口:get、post、put、delete;
返回值支持返回httpclient、json、html、string等。
Code Sample:
- get:
String apiResponse = HttpUtils.get(url);
- post:
String apiResponse = HttpUtils.post(url, data);
- 所有测试用例放在
src/test/java
下,基础包为cn.lj.qa
- 公共方法抽象放在
src/main/java
下 - 每个工程的测试用例单独放在同一个package下
- 定义testng-XXX.xml来指定运行某个(或某几个)模块下的用例,定义env来指定运行环境(test、pro、staging),运行命令:
mvn clean test -DxmlFile=testng-XXX.xml -Denv=test
- testng.xml 中配置所有包下的case
- 所有用例要求可重复运行(及数据准备、清理等需要实现)
- 所有用例尽可能减少相互依赖,及可以单独运行
- 测试结果校验尽可能全面,如 dbCheck、redisCheck等
- 每个用例都要加上用例描述,如:
@Test(description = "测试说明")
- 如果希望某一个用例只在特定环境下运行,例如测试环境,请在该测试类的上方添加监听器 @Listeners(MyIMethodInterceptor.class),同时在 具体的测试方法前加上@TestEnv注解,默认加上就只在测试环境才会运行,如果想在预发或者生产环境运行,可以分别添加@TestEnv(value="ENV.STAGING")、 @TestEnv(value="ENV.PRO"),不加注解或者加上@TestEnv(value="ENV.ALL")会在所有环境下运行
本项目H5自动化基于webdriver(chromedriver)headless模式。 ####注意事项:
- 当前用的驱动是 chromedriver headless模式,在
cn.lj.qa.util.WebDriverUtil
中写死了驱动地址为/usr/local/bin/chromedriver
,所以本地调试或者Linux自动运行机器上要保持驱动路径一致。 - 推荐使用
Selenium IDE
浏览器插件(chrome或者firefox)录制、定位 - 优先使用
By.cssSelector
, 其次优先为By.xpath
,最后是其他定位器 - 注意区分 chromedriver 的版本,如 Mac, Linux, Windows等不同环境版本,地址 http://npm.taobao.org/mirrors/chromedriver/
- 本工程使用
RemoteWebDriver
启动远程浏览器服务:- 镜像为:
dockerhub.test.lj.info/cn.lj.yl/webdriver:v2
, - K2服务为:
lj-qa
空间下的webdriver
, - 调用demo:
WebDriver driver = new RemoteWebDriver(new URL("http://webdriver.lj-qa.k2-test.lj.info/wd/hub"), DesiredCapabilities.chrome());
- 镜像为: