2018 up to now | 2017 | 2016 | 2015 | 2014 | 2013 | 2012

Mailing List - Entries from 2018 up to now


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [QF-Test] How do I update and existing value in a CSV file?


  • Subject: Re: [QF-Test] How do I update and existing value in a CSV file?
  • From: "Yann Spoeri, QFS Support" <support@?.de>
  • Date: Mon, 24 Sep 2018 09:54:11 +0200
  • Delivered-to: qftest-list@?.net

Hi everyone,

In order to update a value in an existing CSV file, you first need to read in the file the complete file, then change the wanted value and then
write everything out ... so - in jython/python, this is looking something like this:

import csv
newCSVData = []
with open(r'C:\temp\foo.csv', 'rb') as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    for row in reader:
        if row[0] == 'CIVPart1': # the value to search
            row[1] = str(int(row[1]) + 1)
        newCSVData.append(row)
with open(r'C:\temp\foo.csv', 'w') as csvfile:
    for line in newCSVData:
        csvfile.write(";".join(line))
        csvfile.write("\n")

The same in groovy (Please note that the groovy csv parser expect a "," instead of a ";" as delimiter):

import org.apache.commons.csv.CSVParser;

def newCSVData = []
parser = new CSVParser(new FileReader("C:/temp/foo.csv"));
def fieldnames = parser.getLine();
newCSVData.add(fieldnames)
for(int i = 0; i < parser.getLineNumber(); i++) {
    vals = parser.getLine();
    if(vals != null) {
        if(vals[0] == "CIVPart1") {
            vals[1] = "" + (vals[1].toInteger() + 1)
        }
        newCSVData.add(vals)
    }
}
def file = new File("C:/temp/foo.csv");
file.newWriter();
for(vals in newCSVData) {
    file << vals[0] << "," << vals[1] << "\n";
}

Greetings & Happy testing,
    Yann

Am 20.09.2018 um 04:23 schrieb Mike Harper:
Hi,

I am very new to QF-Test, Groovy, JavaScript etc. and am finding it incredibly difficult finding out how I can update an existing value in a CSV
file.

I have searched the archives but can't find anything that shows me how to do this.

My test uses a CSV Data File to pull in the CSV file values.
The CSV data contains two rows:
CIVPart1;CIVPart2
CIV-2018-025-;000001

These values are strung together then a SQL statement is used to see if the full CIV Number can be found in the Database.

If found to exist, I add 1 to the CIVPart2 value and check again - doing this until a record is not found in the database.

I then need to add 1 to the calculated CIVPart2 value and write it back to the CIV file so that when the test runs again, the SQL statement
won't reuse values that have already been proven to exist.

I am thinking I need to use aServer Script to achieve the required result. Have been using Groovy to date.

So, can someone step me through the coderequired to update the existing CSV file so that it contains the new value please? (Am almost bald from
pulling my hair out)

Thanks in advance for your help.

Mike



_______________________________________________
qftest-list mailing list
qftest-list@?.de
https://movement.qfs.de/mailman/listinfo/qftest-list


--
_______________________________________________________________

Get the most out of QF-Test - Support directly from the authors
* Training & consulting: www.qfs.de/en/qftest/training.html
* Phone & email support: www.qfs.de/en/qftest/support.html
_______________________________________________________________

Yann Felix Spöri
Support

E: support@?.de
T: +49 8171 38648-20
F: +49 8171 38648-16

Quality First Software GmbH | www.qfs.de
Tulpenstr. 41 | 82538 Geretsried | Germany
GF Gregor Schmid, Dr. Martina Schmid, Karlheinz Kellerer
HRB München 140833