繁体   English   中英

是否可以在 TestCafe 中循环测试?

[英]Is it possible to loop tests in TestCafe?

我正在尝试使用 for 子句循环测试,因为我只想从 JSON 外部文件(具有许多节点和子节点)中获取数据。 我收到“没有要运行的测试”错误。 我使用 TestCafe 1.6.0 和 TestCafe Studio 1.1.0。

这里有一些示例代码:

import { t } from 'testcafe';
import {Selector} from 'testcafe';
import {Role} from 'testcafe';
import {helperFunc1, helperFunc2} from '../helper.js';
const fs = require('fs');
const path = require("path");
const fetch = require("node-fetch");
const rawdata = fs.readFileSync(path.resolve(__dirname, "../data.json"));
var data = JSON.parse(rawdata);

fixture `Test`
    .page `http://www.testpage.com`
    .beforeEach(t => t.resizeWindow(1920, 1080))

for(var i = 0; i < data.jsonNode[i].length; i++)
{
    test(`Test - 1`, async t => {await helperFunc1(data.jsonNode[i]); 

    test(`Test - 2`, async t => {await helperFunc2(data.jsonNode[i], "All", "#HASH"); });
}

data.JSON 示例

{
"jsonNode": [
        {

                "test1": "A",
                "test2": "101",
                "test3": "2",
                "test4": "4"
        },
        {

                "test1": "B",
                "test2": "102",
                "test3": "3",
                "test4": "5"
        }],

"jsonNode1": [
        {

                "test10": "A",
                "test11": "101",
                "test12": "2",
                "test13": "4"
        },
        {

                "test10": "B",
                "test11": "102",
                "test12": "3",
                "test13": "5"
        }]
  }

TestCafé 绝对可以进行循环测试,其结构与您描述的结构非常接近。

给定以下 JSON 文件,存储在“dataset.json”中:

{
    "nodes": [
        {
            "id": 0,
            "name": "MyFirstNode",
            "foo": "bar1"
        },
        {
            "id": 1,
            "name": "MySecondNode",
            "foo": "bar2"
        },
        {
            "id": 2,
            "name": "MyThirdNode",
            "foo": "bar3"
        },
    ]
}

TestCafé 可以使用以下实现在“节点”上循环:

// JSON dataSet containing array on which we will loop the tests 
const dataSet = require( __dirname + 'dataset.json' );

fixture('MyLoopingTests')
    .page('http://www.example.com');

// Getting the 'nodes' as a const for readability purpose 
const nodes = dataSet.nodes; 

nodes.forEach((nodes) => {
    test(`Run the tests for "${node.name}"`, async t => {

            // My test details for 'node'
    });
})

产生以下 output:

MyLoopingTests
✓ Run the tests for "MyFirstNode"
✓ Run the tests for "MySecondNode"
✓ Run the tests for "MyThirdNode"

暂无
暂无

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

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