资讯专栏INFORMATION COLUMN

章鱼教你自动生成json数据来测试~

sean / 1401人阅读

摘要:如果手动的维护编写格式的数据是很麻烦的,所以推荐生成数据来方便我们进行接口的测试。用真实数据测试将使你的应用程序更加健壮,因为你会有可能发现生产前一天发布的错误。

如果你正在测试一个线上产品,你会想确保你的密切模拟生产环境条件下的测试。在生产中,你将有用户的军队在你的应用程序乒乒乓乓,并用数据填充数据库,这是你的代码压力。更糟的是,你输入的数据将偏向你自己的使用模式,将不符合实际使用,可能会留下严重的错误未被发现。某些应用程序框架,如作为Ruby on Rails的,有很大的数据库。但并不是每个人都是程序员,有时间去学习一个新的框架,或者是随意采用一个新的平台。

当我们进行测试的时候,可能会有需要进行批量的验证账号和密码的可用性。如果手动的维护编写json格式的数据是很麻烦的,所以推荐生成json数据来方便我们进行api接口的测试。

参数名 参数类型 必须
userId String
password String

首先我们先使用Java模拟一个数据并生成一个接口需要的json数据(开始啦~~)

/**
 * User基础类
 */
public class User{
    private String userId;
    private String password;

    public User(){
        
    }
    
    public User(String userId, String password){
        this.userId = userId;
        this.password = password;
    }
    
    /**省略get和set方法**/
}

/**
 * 模拟数据测试类
 */
public class TestUser{
    @Test
    public void test(){
        User user1 = new User("TestUser01", "eyJtZW1iZXJMaXN0I");
        /*
         * 这里我们已经模拟好了1个用户数据了。
         * 如果我们需要将他们变为json格式的数据则需要借用工具来实现
         * 例如常见的jackson,fastjson,和gson
         * 这里使用fastjson作为示范,请看官们自备fastjson的jar包
         * http://repo1.maven.org/maven2/com/alibaba/fastjson/
         */
         
        String jsonStr = JSON.toJSONString(user1);
        
        System.out.println(jsonStr);
    }
}

控制台会输出:
{"userId":"TestUser01","password":"eyJtZW1iZXJMaXN0I"}

看,这样我们就拥有了简单的单个数据的json格式啦

这些用户名和密码都是事先指定好的,可以写在程序里面,也可以批量的写在txt文档中,如果有多个用户,可以一行写一个用户名和密码。一般用户名和密码之间用一个空格分隔就行了,因为用户名和密码一般情况下都是不允许使用空格的,分割符可以根据情况更换,但是需要注意,分割符不允许能在两个字段出现的。

现在我们来实现从文本中批量的读取数据,并生成我们需要的json格式:
有一个text文本:
user.txt

TestUser01 eyJtZW1iZXJMaXN0I
TestUser02 Q4US8wIiwibGFpeXV
TestUser03 ajVnRXVxWlZyQUNWS
TestUser04 oi6Zi/6IO257OV5Lu
TestUser05 In0seyJhZGRyZXNzI
TestUser06 wiaWNvblVybCI6IiI

文本里面记录了多个用户信息,这里是6个哦

public static List readUserText() {
    File file = new File("text.txt");
    List data = new LinkedList<>();
    try (BufferedReader br = new BufferedReader(
            new InputStreamReader(new FileInputStream(file), "utf-8"))) {
        String readLine = null;
        while (null != (readLine = br.readLine())) {
            String[] userData = readLine.split(" ");
            data.add(new User(userData[0], userData[1]));
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    return data;
}

然后我们一行一行的读取,把每行拆分,并封装成用户数据,最后放到List数组中。
最后我们把模拟的数组数据转换成数组型的json数据

@Test
public void test2(){
    List data = readUserText();
    String jsonStr = JSON.toJSONString(data);
    System.out.println(jsonStr);
}

控制台会输出

[{"password":"eyJtZW1iZXJMaXN0I","userId":"TestUser01"},{"password":"Q4US8wIiwibGFpeXV","userId":"TestUser02"},{"password":"ajVnRXVxWlZyQUNWS","userId":"TestUser03"},{"password":"oi6Zi/6IO257OV5Lu","userId":"TestUser04"},{"password":"In0seyJhZGRyZXNzI","userId":"TestUser05"},{"password":"wiaWNvblVybCI6IiI","userId":"TestUser06"}]

现在我们看到的json数据是属于压缩的格式,所以可读性并不高,我们需要格式化一下这些json数据,也就是俗称的美化~ ~

[
    {
        "password":"eyJtZW1iZXJMaXN0I",
        "userId":"TestUser01"
    },
    {
        "password":"Q4US8wIiwibGFpeXV",
        "userId":"TestUser02"
    },
    {
        "password":"ajVnRXVxWlZyQUNWS",
        "userId":"TestUser03"
    },
    {
        "password":"oi6Zi/6IO257OV5Lu",
        "userId":"TestUser04"
    },
    {
        "password":"In0seyJhZGRyZXNzI",
        "userId":"TestUser05"
    },
    {
        "password":"wiaWNvblVybCI6IiI",
        "userId":"TestUser06"
    }
]

看,是不是清晰多了~ ~ ~

当你的测试数据库中充满了逼真的数据,你会更多地参与作为一个测试仪。当你表现出新的特征的人,他们会明白他们更快。真实的数据是多种多样的,包含字符,不玩弄你的代码,如省略号,或从其他语言中的Unicode字符。用真实数据测试将使你的应用程序更加健壮,因为你会有可能发现生产前一天发布的错误。

作者信息
原文作者Maxleap团队_云服务研发成员:Sunny Zhang【原创】
力谱宿云 LeapCloud 团队首发:https://blog.maxleap.cn/archi...
欢迎关注微信订阅号:MaxLeap_yidongyanfa

相关阅读
Amazon和Mysql之间的那点事儿
当我们说数据挖掘的时候我们在说什么

作者往期佳作
单元测试和集成测试业务应用程序

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/66127.html

相关文章

  • IntelliJ IDEA 2017.1 EAP与异步堆栈跟踪调试器扩展

    摘要:带有一个新的调试器捕获这改变了堆栈跟踪相关各部分用异步代码执行接收器与相应地区的堆栈跟踪捕获的异步代码传递发送方。 反应性编程趋势后,我们的代码越来越异步。 showImg(https://cscdn.maxleap.cn/2.0/download/NTZmMGQ0NzdhNWZmN2YwMDAxZWJlMjg1/zcf-1eb1a6d0-09be-4382-ad89-8c640cc4...

    赵春朋 评论0 收藏0
  • 辞掉房地产中介、卖章鱼小丸子遇到困难、最后被逼无奈选择软件测试实现月薪24K...

    摘要:希望大家能在这个成长过程中收益良多。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好不积跬步,无以至千里。等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。 ...

    lx1036 评论0 收藏0
  • 当时,章鱼保罗做的预测,现在有企业专门在做了

    摘要:数据库无法根据业务分摊压力,单失效节点多,事故也频繁出现。这是智慧摩羯这时简单的架构图,是单一的节点库,增加了很多运维脚本,当时在上就有几十台。开发人员变多,出现的事故概率增大,系统升级的风险变高。 2010 年南非世界杯,「预言帝」章鱼保罗抢走了原本属于球星的风头,它精准的预测了德国国家队的比赛结果;现实中,我们每个人也会对比赛结果进行娱乐性的预测,关注自己喜欢的球队,而有这么一家专...

    baishancloud 评论0 收藏0
  • 模仿飞蛾识别味道的神经网络,说明了为什么飞蛾学习速度远超机器

    摘要:在飞蛾脑中,章鱼胺可以帮助加强产生成功的神经线路。广泛来说,此项研究成果可能给人工神经网络领域带来极大的影响。 作为现代机器学习基石的深度神经网络,虽然模仿的是生物神经网络,但其实这两者之间有着极大的区别。抛开仅有的一些相似处,有些重要的机器学习机制没有任何自然界的版本,而这两者学习过程之间也有着大量的不同。这些区别很有可能解释了为什么机器学习系统在某些领域中的表现远逊于自然系统。就拿昆虫来...

    hizengzeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<