详解接口测试构造测试数据

发表于:2023-12-28 09:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Bug挖掘机    来源:51CTO博客

  构造数据方法
  构造少量数据
  对于上面例子(2)是我们经常碰到的情况。如果只需要构造一个人的信息,即可满足测试,我们可以使用SQL 语句在数据库里面??insert???插入一条数据,或者??update??一条历史数据使其满足查询条件即可
  下面演示一下,先在数据库里面创建person数据表,创建SQL语句如下:
  create table `person` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id', 
    `age` bigint(20) unsigned NOT NULL COMMENT '年龄', 
    `height` bigint(20) DEFAULT NULL COMMENT '身高', 
    `sex` char(10) NOT NULL DEFAULT '' COMMENT '性别', 
    `city` char(10) NOT NULL DEFAULT '' COMMENT '所在城市', 
    `qq` char(10) NOT NULL DEFAULT '' COMMENT 'qq号码', 
    `create_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间', 
    `update_time` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新时间', 
    PRIMARY KEY (`id`)
  ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '个人信息测试表';
  创建好了以后,执行SQL语句??show create table person ;???可看到数据表结构。
  假设现在有个需求需要查询,身高大于180,年龄小于25,性别为男的QQ号信息。
  现在数据表里数据为空,为了进行测试,现在我们在数据库里面插入几条数据,其中一条为满足需求的数据,其余为不满足需求的数据。
  #满足条件的数据
  insert into person(
    id, age, height, sex, city, qq, create_time, 
    update_time
  ) 
  values 
    (
      1, 18, 185, "男", "北京", "12345678", 
      "1654855117", "1654855117"
    );
  #不满足条件的数据
  insert into person(
    id, age, height, sex, city, qq, create_time, 
    update_time
  ) 
  values 
    (
      2, 18, 155, "女", "南京", "7783434", 
      "1654855117", "1654855117"
    );
  最后用select  SQL语句查询一下指定数据,有了测试数据后就可以开始测试了。
  采取这种方法应注意避免在数据库里面产生脏数据,理解好业务逻辑后,再写入符合需求的数据。
  除了自己手动在数据库写入数据外,如果系统有暴露数据生产接口(即通过调用该写接口能在数据库写入正确的数据),我们还可以通过调用数据生产接口去产生数据,推荐使用这种方式,一般不会产生脏数据。
  先介绍一下工程结构:
  ·bean目录:存放类
  · controller目录:入口
  · dao目录:数据库相关操作
  · service目录:处理业务逻辑
  · utils目录:存放工具类
  项目使用方法如下:
  (1)安装Python 3.x环境,以及必要的依赖库,项目当中已经包含requirements.txt,所以在执行??pip install -r requirements.txt??即可安装依赖库。
  (2)Pycharm里面启动Flask Web服务。
  (3)验证启动成功,在浏览器访问http://127.0.0.1:5000,若出现Hello World!,则说明服务启动成功。
  (4)调用接口写入数据库。
  在此工程当中,有一个接口名叫add_person,请求方式是post,请求参数格式为json,通过调用此接口就能往数据库里面写入个人信息。
  @app.route('/add_person', methods=['POST'])
  def add_person():
      req_params = request.get_json()
      print(f"req_params: {req_params}")
      print(type(req_params))
      insert_id=service.person.add_person(req_params)
      base_ret['data']={"insert_id":insert_id}
      return base_ret
  我们可以使用Postman调用接口,往数据库写入数据。
  最后可以使用SQL语句select在数据库里面查看到插入的数据:
  有了满足需求的数据,我们就能继续进行接口测试了,当然细心的朋友发现,直接调用写接口仍然有可能会产生脏数据,在调用前大家不要忘了仔细阅读接口文档。
  这是一个很简单的调用数据生产接口写入数据库的例子,希望给大家一些启发,另外此工程当中用到了操作数据库用到了ORM框架,感兴趣可以自行研究。
  最后小结一下构造数据的两种方法:
  ·直接使用SQL语句写入数据库
  · 调用数据生产接口写入数据库
  构造大量数据
  有时候,我们需要上百条的测试数据,手动调用接口,或者手动写SQL效率就非常低下了,可以通过结合数据生产接口编写数据构造脚本批量生产数据。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号