1

我的项目已经存在使用另一个工具的端到端场景。我们正在使用 NoraUI 重现我们的场景。该场景已重现并且可以正常工作,但使用的是硬编码的测试数据。

我们希望将我们在项目中的动态测试数据生成复制到这个中,但这是一种非常复杂的生成方式,因为我们在数据库上有多个查询,这些查询可能会根据先例的结果和其他条件而改变。

目前似乎只有三种方法可以将数据注入场景:

  • XLSX 文件
  • CSV 文件
  • 对数据库的单一查询

这通过在运行开始时启动的 ScenarioInitiator 发生。

有没有办法添加自定义方式将数据注入场景,或者例如在 XLSX 文件中生成数据,然后再注入数据而不需要另一个项目?

4

1 回答 1

1
  • 创建一个新包« noraui.data.xxx »(示例:« noraui.data.json »)
  • 创建一个新的 java 类(例如:« CustomJsonDataProvider »)
  • 将此类扩展为“CommonDataProvider”并实现为“DataInputProvider”和“DataOutputProvider”
  • 在您的 XxxxxRobot.properties 文件中:

      # type of dataProvider (EXCEL, CSV, DB, REST, noraui.data.xxx.YourCustomDataProvider)
    
       dataProvider.in.type=noraui.data.json.CustomJsonDataProvider
    
       dataProvider.out.type=noraui.data.json.CustomJsonDataProvider
    

CustomJsonDataProvider 类示例:

package noraui.data.json;

import noraui.data.CommonDataProvider;
import noraui.data.DataInputProvider;
import noraui.data.DataOutputProvider;
import noraui.exception.TechnicalException;

public class CustomJsonDataProvider extends CommonDataProvider implements DataInputProvider, DataOutputProvider {

    public CustomJsonDataProvider() {
        super();
        logger.info("data provider used is ...");
    }

    @Override
    public void prepare(String scenario) throws TechnicalException {
        // TODO Auto-generated method stub

    }

    @Override
    public void writeFailedResult(int line, String value) throws TechnicalException {
        // TODO Auto-generated method stub

    }

    @Override
    public void writeWarningResult(int line, String value) throws TechnicalException {
        // TODO Auto-generated method stub

    }

    @Override
    public void writeSuccessResult(int line) throws TechnicalException {
        // TODO Auto-generated method stub

    }

    @Override
    public void writeDataResult(String column, int line, String value) throws TechnicalException {
        // TODO Auto-generated method stub

    }

    @Override
    public int getNbLines() throws TechnicalException {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public String readValue(String column, int line) throws TechnicalException {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public String[] readLine(int line, boolean readResult) throws TechnicalException {
        // TODO Auto-generated method stub
        return null;
    }

}
于 2017-06-28T11:44:02.553 回答