简体   繁体   中英

How can I run a function multiple times with multiple data sets or values?

I'm kinda new to programming and got this as an assignment at work. I need to run a method that sends a message (FIX format) multiple times with multiple data sets. Here's how I build with its respective data and send the message:

private void testCaseAttempt(String testCaseName) throws Exception {

        StringBuilder errorBuilder = new StringBuilder();

        // Read test case arguments
        new Arguments(testCaseName);

        QuoteRequestBuilder builder = app.builders().quoteRequest();

        BigDecimal b1;
        b1 = new BigDecimal(10000);
        //Date transactTime;
        //transactTime = new Date(0);
        //expireTime 10 minutes from now
        Calendar now = Calendar.getInstance();
        now.add(Calendar.MINUTE, 10);
        Date expireTime = now.getTime();

        //BUILD THE MESSAGE
        builder
        .setField(131, "5EB26EAAC074000D0000")
        .symbol("DANBNK")
        .securityID("SE0011116474")
        .currency("SEK")
        .securityIDSource("4")
        .setField(54, "2")
        .expireTime(expireTime)
        .orderQty(b1)
        .setField(64, "20200508")
        .setField(1629, "10")
        .setField(1916, "0")
        .setField(60, "20200526-15:48:53.006")
        .setField(761, "1")
        .partyID("13585922", PartyIDSource.PROPRIETARY_CUSTOM_CODE, 11, null)
        .partyID("1270", PartyIDSource.PROPRIETARY_CUSTOM_CODE, 13, null)
        .partyID("SEB", PartyIDSource.PROPRIETARY_CUSTOM_CODE, 1, null)
        .partyID("1786343", PartyIDSource.PROPRIETARY_CUSTOM_CODE, 117, null);

        Message quoteRequestMessage = builder.getMessage();

        //SEND THE MESSAGE
        app.sendMessage(quoteRequestMessage, app.getSession(session));

        long timeout = Properties.getLong(0L, "waitForMessage", "FIX");
        Message responseMessage;
}

I build the FIX message with the "setfield" instructions then I just send it. This works just fine except I need to do it 20-30 times (so 20-30 messages) and I need to slightly change the values or parameteres each time. I have an idea how to do this with cucumber using a feature file with an "Examples" table with my desired data so it calls this method but that feels like overkill at the moment. I was thinking of using an excel file with a table so I can comfortably change the values in each row and just feed it to this function somehow.

By the way, I didn't copy all the code in the function, I just copied the lines in which the msg is built and sent.

Any idea how I can do this? Your replies are much appreciated!

Thanks in advance.

Create your field map and just iterate that field map as below

Map<Integer,String> fieldMap = new HashMap<>();
        fieldMap.put(131,"5EB26EAAC074000D0000");
        fieldMap.put(54,"2");
        fieldMap.put(64,"20200508");
        fieldMap.put(1629,"10");

        fieldMap.forEach((k,v)->{
            builder.setField(k,v)
        });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM