我正在使用BDD编写测试用例。我有一个我被困的情景
我正在使用以下步骤生成随机数据
When generate random data for registration form
Bean类有一些像fname, lname, email, pass
这样的字段,而我在上面调用它会生成随机数据并填入那个bean类
现在它返回那个bean类对象,我将它存储在formdata
变量
And store into 'formdata'
现在我想将其发送到我的用户名字段,如下所示
And enter firstname as '${formdata}'
相同的代码步骤:
@QAFTestStep(stepName = "enterFirstName", description = "enter firstname as {0}")
public void enterFirstName(Map<String, Object> data) {
sendKeys(data.get("firstname").toString(), element);
}
它的工作正常但是假设在某些情况下我只需要发送字符串,如下所示
And enter firstname as 'Narendra'
步骤将是:
@QAFTestStep(stepName = "enterFirstName", description = "enter firstname as {0}")
public void enterFirstName(String fname) {
sendKeys(fname, element);
}
那么我如何将这两个代码作为单一方法进行管理?
答案 0 :(得分:0)
我有类似的需要为更广泛的输入覆盖生成随机字符串。我建议根据分隔符形成一个逻辑。
示例:强>
public static void main(String[] arg) {
enterFirstName("iamkenos");
enterFirstName("${formdata}");
}
public static void enterFirstName(String fname) {
System.out.println(transformData(fname));
}
public static String transformData(String data) {
Pattern pattern = Pattern.compile("^\\$\\{.+}$");
Matcher matcher = pattern.matcher(data);
if (matcher.matches()) {
//do some logic on your data;
data = "my new data 123";
}
return data;
}
但是,这将要求您:
transformData(arg)
${}
<强>输出:强>
iamkenos
my new data 123
答案 1 :(得分:0)
我尝试了下面的解决方案,帮助我按照我的预期做同样的事情:
@QAFTestStep(stepName = "enterFirstName", description = "enter firstname as {0}")
public void enterFirstName(Object obj) {
if (obj instanceof LinkedTreeMap) {
Map<String, Object> map = (Map<String, Object>) obj;
sendKeys(map.get("firstname").toString(), "regpage.firstname.textbox");
} else if (obj instanceof String) {
sendKeys(obj.toString(), "regpage.firstname.textbox");
} else if (obj instanceof RandomRegisterDataGenerator) {
RandomRegisterDataGenerator data = (RandomRegisterDataGenerator) obj;
sendKeys(data.getFirstname(), "regpage.firstname.textbox");
}
}
答案 2 :(得分:0)
您看过form-data-bean吗?最好是在其中可以用一个字段或所有字段填充bean的位置,并且它将相应地填充UI。
您可以按照以下步骤填充bean并在bean类中填充UI:
//Object obj: argument can be string or map or json string or xml key
@QAFTestStep( description = "fill registration form using {data}")
public void fillRegistrationFormWithData(Object obj) {
this.fillData(obj);
this.fillUiElements();
}
@QAFTestStep( description = "fill registration form with random data")
public void fillRegistrationFormWithRandomData() {
this.fillRandomData();
this.fillUiElements();
}