简体   繁体   English

用于 UI 测试的夹具(JSON 文件)

[英]Fixtures (JSON file) for UI Testing

Has anybody used fixtures (json file) to load the data in postgres database and execute UI testing?有没有人使用fixtures(json文件)在postgres数据库中加载数据并执行UI测试?

Using node-postgres and node-pg-copy-streams can load and remove/delete data from postgres database.使用 node-postgres 和 node-pg-copy-streams 可以从 postgres 数据库加载和删除/删除数据。 Code and example: [https://github.com/AmitKulkarni9/fixtures-tests][1]代码和示例:[https://github.com/AmitKulkarni9/fixtures-tests][1]

LoadData.js加载数据.js

const fs = require('fs');
const path = require('path');
const {Client} = require('pg');
const copyFrom = require('pg-copy-streams').from;
const config = require('./config.json');

// Getting connection parameters from config.json
const host = config.host;
const user = config.user;
const pw = config.pw;
const db = config.db;
const port = config.port;
const conString = `postgres://${user}:${pw}@${host}:${port}/${db}`;

        
class LoadData {
    async Load (targetTable) {
        try {
            const inputFile = path.join(__dirname, `/data/${targetTable}.csv`);
            const client = new Client({connectionString: conString,});
            client.connect();  // gets connection
            const stream = client.query(copyFrom(`COPY ${targetTable} FROM STDIN WITH CSV HEADER`));
            const fileStream = fs.createReadStream(inputFile);
            fileStream.on('error', (error) =>{
                console.log(`Error in creating read stream ${error}`);
                client.end();
                return;
            })
            stream.on('error', (error) => {
                console.log(`Error in creating stream ${error}`);
                client.end();
                return;
            })
            stream.on('finish', () => {
                console.log(`Completed loading data into ${targetTable}`);
                client.end();
            })
            fileStream.pipe(stream);
            return;
        } catch (e) {
            console.error(e);
            client.end();
            return;
        }
    }
}
module.exports = LoadData;

RemoveData.js RemoveData.js

const path = require('path');
const {Client} = require('pg');
const config = require('./config.json');

// Getting connection parameters from config.json
const host = config.host;
const user = config.user;
const pw = config.pw;
const db = config.db;
const port = config.port;
const conString = `postgres://${user}:${pw}@${host}:${port}/${db}`;


class RemoveData {
    async Remove (table) {
        try {
            const client = new Client({connectionString: conString,});
            client.connect();  // gets connection
            client.query(`DELETE FROM ${table} WHERE id IN ($1,$2,$3) RETURNING *`, [1,2,3], (err, result) => {
                if(err) {
                    console.log(err);
                    client.end();
                    return;
                } else {
                    console.log(`Deleted data from ${table}`);
                    //let results= result.rows;
                    //console.log(results);
                    client.end();
                    return;
                }
            });
        } catch (e) {
            console.error(e);
            client.end();
            return;
        }
    }
}
module.exports = RemoveData;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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