1 为什么开发ZenData
2 ZenData数据生成工具简介
3 如何获得支持
4. 快速入门
4.1 安装部署
4.2 将ZenData加入系统环境变量中(可选)
4.3 命令行参数说明
4.4 命令行调用示例
4.5 內置数据定义示例
4.6 YAML定义语法总览
5. 用户指南
5.1. 数据定义语法
5.1.1 区间
5.1.2 步长
5.1.3 随机
5.1.4 重复
5.1.5 循环
5.1.6 循环支持区间
5.1.7 格式化
5.1.8 函数处理
5.1.9 字面常量
5.1.10 前后缀
5.1.11 分隔符
5.1.12 宽度
5.1.13 嵌套
5.1.14 嵌套字段递归
5.1.15 字段结果随机
5.1.16 文本文件数据
5.1.17 Excel数据查询
5.1.18 时间表达式
5.1.19 值表达式
5.2. 內置数据定义
5.2.1 系列定义
5.2.2 实例定义
5.2.3 实例间无限级嵌套
5.3. 用户数据自定义
5.3.1 自定义Config
5.3.2 扩展现有定义
5.4. 数据定义引用
5.4.1 引用ranges系列
5.4.2 引用instances实例
5.4.3 多froms联合引用
5.4.4 引用Config配置
5.4.5 引用yaml文件内容
5.4.6 全局from语句
5.5. 数据输出
5.5.1 文本格式输出
5.5.2 JSON格式输出
5.5.3 XML格式输出
5.5.4 SQL格式输出
5.5.5 直接插入数据到MySQL
5.5.6 CSV格式输出
5.5.7 Excel格式输出
5.5.8 ProtoBuf格式输出
5.6. ZenData命令行详解
5.6.1 Default配置覆盖
5.6.2 多配置文件新语法
5.6.3 列出內置数据
5.6.4 查看內置数据
5.6.5 从SQL生成数据定义
5.6.6 从数据库表结构生成数据定义
5.6.7 清除数据前后缀
5.7. ZenData文章生成器
5.7.1 中文词语基础数据
5.7.2 转换文章到YAML配置
5.7.3 文章格式语法介绍
5.7.4 从YAML配置生成新文章
5.8. ZenData客户端
5.8.1 Web接口调用
5.8.2. 数据提供者示例
5.8.2.1 TestNG数据提供者示例
5.8.2.2 PHPUnit数据提供者示例
5.8.2.3 PyUnit数据提供者示例
5.8.3. Web数据管理工具
5.8.3.1 关于客户端
5.8.3.2 加载已有数据文件
5.8.3.3 管理我的数据
5.8.3.4 管理內置数据
5.8.3.5 数据设计页面
5.8.3.6 数据区间编辑
5.8.3.7 数据引用编辑
5.9 ZenData自动升级
6. 内置数据一览
6.1 使用命令查看內置数据
6.2. 预置Excel数据
6.2.1 国家
6.2.2 地址
6.2.3 人名
6.2.4 颜色
6.2.5 中文词语
6.2.6 城市区号
6.2.7 公司名称
6.2.8 成语
6.2.9 歇后语
6.2.10 古诗
6.2.11 歌曲
6.2.12 玩笑
6.2.13 动植物
6.2.14 食物
6.2.15 水果
6.3 內置数据定义

TestNG数据提供者示例

2021-04-26 13:56:23
陈琦
5900
最后编辑:陈琦 于 2022-05-10 17:11:07
分享链接

以下的自动化测试项目中,我们使用ZenData数据生成服务作为TestNG的DataProvider。

https://gitee.com/ngtesting/ci_test_data_driven
测试脚本的代码如下:
@Test(testName = "登录测试")
public class TestLogin {
    private static final Logger log = Logger.getLogger(TestLogin.class);

    @Test(priority=1, testName = "登录", dataProvider="userAccount")
    public void login(String key, Object item) {
        JSONObject json = (JSONObject)item;
        String email = json.getString("email");
        String password = json.getString("password");
        String expectedTitle = json.getString("title");

        // 此处完成登录操作 ...

        // 获取页面标题
        String actualTitle = expectedTitle; // mock

        // 验证页面标题
        Assert.assertEquals(actualTitle , expectedTitle);
    }

    @DataProvider(name="userAccount")
    public Object[][] getUserAccountData() {
        Object[][] data = ZenData.LoadData(
                "127.0.0.1:8848", "","users/test/_account.yaml", 3);

        return data;
    }
}
ZenData服务接口请求代码如下:
public class ZenData {
    public static Object[][] LoadData(String host, String defaultFile, String configFile, int count) {
        String url = String.format("http://%s/data?default=%s&config=%s&&n=%d",
                host, defaultFile, configFile, count);
        String jsonStr = HttpRequest.get(url);

        List<JSONObject> data = JSON.parseArray(jsonStr, JSONObject.class);

        Iterator<JSONObject> it = data.iterator();
        Object[][] arr = new Object[data.size()][2];
        int i = 0;
        while(it.hasNext()){
            String key = i + 1 + "";
            JSONObject item = it.next();

            arr[i][0] = key;
            arr[i][1] = item;

            i++;
        }

        return arr;
    }
}


发表评论
评论通过审核后显示。