我的s3bucket中存储了一个“ clientId”。该值每天都会从外部设备场运行中进行更新。我想将此//const Person = Object.create(Function);
// or
const Person = new Function();
const john = Object.create(Person);
Function.prototype.foo = 'foo';
console.log(john.foo);
作为参数传递给我的测试套件。因为s3内容每天都在更新,所以我在代码中编写了一个函数ClientID
。我想将此函数作为ReadFromS3()
参数的值。
代替呼叫,
testNG
我想打电话给类似的人
<sysproperty key="clientId" value="abc"/>
使用testNG可以实现吗?如果是这样,请提供指针。
答案 0 :(得分:0)
是的,您可以做到,但是这会有点令人费解。
这是您的操作方式。
@Test
方法中有了方法名称,就可以使用反射来加载类,找到方法并调用它。这是一个样本
import java.lang.reflect.Method;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class SampleTestClass {
@Parameters({"clientId"})
@Test
public void testMethod(String methodName) throws Exception {
System.err.println("Value for clientId :" + invokeMethod(methodName));
}
private String invokeMethod(String methodName) throws Exception {
String[] parts = methodName.split("#");
String className = this.getClass().getName();
String method = parts[0];
if (parts.length == 2) {
className = parts[0];
method = parts[1];
}
Class<?> clazz = Class.forName(className);
Object object = clazz.newInstance();
Method m = clazz.getDeclaredMethod(method);
m.setAccessible(true);
return m.invoke(object).toString();
}
private String readFromS3() {
return "s3Bucket";
}
}
套房文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="57006917_Suite" verbose="2">
<test name="57006917_Test">
<parameter name="clientId"
value="com.rationaleemotions.stackoverflow.qn57006917.SampleTestClass#readFromS3"/>
<classes>
<class name="com.rationaleemotions.stackoverflow.qn57006917.SampleTestClass"/>
</classes>
</test>
</suite>
输出:
...
... TestNG 7.0.0-beta7 by Cédric Beust (cedric@beust.com)
...
Value for clientId :s3Bucket
PASSED: testMethod("com.rationaleemotions.stackoverflow.qn57006917.SampleTestClass#readFromS3")
===============================================
57006917_Test
Tests run: 1, Failures: 0, Skips: 0
===============================================
===============================================
57006917_Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
答案 1 :(得分:0)
如果存储在我的s3bucket中的“ clientId”每天都在更新,则最好在套件之前先读取一次客户端ID并将其存储到上下文或系统属性中。您可以为此实现套件侦听器或使用BeforeSuite
创建方法。