测试平台系列(41) 编写数据构造器功能(上)

简介: 编写数据构造器功能(上)

大家好,我是米洛,一个测试开发博主,world很大, 你应该去看看!

这篇文章阅读需要一定的耐心,如果看的不爽可以点个赞提醒一下博主。

1.jpg

image

回顾


上篇已经找到了一个可测的项目,但是遇到了需要登录的问题。正常来说,我们如果写代码的话,肯定很方便,在setUp这类方法里咔咔咔登录一下,存储对应的JSESSIONID,然后测试函数就能够用JSESSIONID畅通无阻访问项目了。

找个例子


下面我们来看一个简单的例子:

2.jpg

由于这个项目很老了,很多图片过期了都

如图所示,我想测试一个获取用户列表的接口,对应这个页面。因为我们暂时没有整理出对应的接口文档,只能自己看代码或者抓包去了解这个请求。

3.jpg

image

好在这个请求比较简单,是个GET,并且接受一个nickname字段。根据经验,这个接口可以根据对应的用户名查询对应的用户信息。

4.jpg

可以看到这个接口是需要登录的

平台化思路


那么平台化的话,应该怎么做呢?我们刚才梳理了具体的过程。

  1. 设计用例
  2. 调用login接口,获取到凭据(token/cookie等)
  3. 根据凭据请求获取用户列表接口
  4. 根据对应的用例制造不同的请求参数(nickname)
  5. 根据用例编写对应的断言信息

熟悉Python+excel的朋友,可能会在excel添加了好多条测试数据和期望结果了,其实平台化也是类似。

我们只需要关心一个用例的真正执行过程:

  1. 登录获取凭据
  2. 通过凭据请求接口

明白这点的话,我们就开始改造我们的Executor类了。所以我们要做的就是先执行登录用例,再执行测试用例。换句话说,登录用例是该测试用例的前置条件(setUp/初始化数据操作),我这里给他取了个名儿: 数据构造器,因为我们常说的接口之间的依赖,常常是数据引起,如果登录后能拿到凭据,那么我们对登录的依赖就被解决了。

我们执行用例的时候,是这样的顺序,如果用例有数据构造器,那么我们先执行数据构造器方法,目的就是把依赖数据拿到。

Constructor表


5.jpg

表设计

id,deleted_at,created_at,create_user,update_user这些字段都是老生常谈了,不赘述了。

  • type
    我们的数据可能来自一次http请求,redis操作,sql查询,其它测试用例等等。我暂时定了3个最常见的:
    0: testcase 1: sql 2: redis
    其他的我们后续遇到再补充,肯定会有的,比如py脚本等等
  • name:构造器的描述
  • enable: 是否开启
    比如某天你暂时不需要进行这个操作了,你可以临时关闭,后续可以打开。
  • public: 是否公开,不公开就只能你自己舒服别人不能舒服
  • case_id: 这个构造器所属的case_id
  • value: 构造器的返回值
    这个大家能理解吧,我构造了数据,是为了让自己再取出来。比如我set woody="帅哥",后续我是要用这个帅哥的,那么此时的woody就是value了,或者叫return_value更方便理解。
  • constructor_json: 构造json
    由于我们不同的数据,对应不同的数据格式。举个例子,如果我是个sql类型,我可能需要jdbcUrl(数据库连接地址),sql等关键信息,其实这种情况我们用mongo当数据库会更舒服。只不过为了降低系统复杂度,尽量少引入新的组件,能忍就忍了。

定义造数器请求参数


6.jpg

基本上没有什么大的区别

编写新增数据构造器功能


7.jpg

修改和删除的暂时还没完成

页面操作


  1. 为对应的用例添加构造器

8.jpg

image

  1. 选择测试用例类型

    9.jpg


image


10.jpg

提前准备好了一个正常登录的用例

最后的效果就是,查询所有用户列表用例拥有了一个用户正常登录的数据构造器。

这期的内容就到这里了,太多了我自己都消化不良。




相关文章
|
8天前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
35 3
快速上手|HTTP 接口功能自动化测试
|
24天前
|
存储 人工智能 自然语言处理
知识库优化增强,支持多种数据类型、多种检索策略、召回测试 | Botnow上新
Botnow近期对其知识库功能进行了全面升级,显著提升了数据处理能力、检索效率及准确性。新版本支持多样化的数据格式,包括PDF、Word、TXT、Excel和CSV等文件,无需额外转换即可直接导入,极大地丰富了知识来源。此外,还新增了细致的文本分片管理和编辑功能,以及表格数据的结构化处理,使知识管理更为精细化。 同时,平台提供了多种检索策略,包括混合检索、语义检索和全文检索等,可根据具体需求灵活选择,有效解决了大模型幻觉问题,增强了专业领域的知识覆盖,从而显著提高了回复的准确性。这些改进广泛适用于客服咨询、知识问答等多种应用场景,极大提升了用户体验和交互质量。
44 4
|
2天前
|
存储 监控 安全
在自动化测试环境中,如何确保测试数据的安全性和隐私性
在自动化测试环境中,如何确保测试数据的安全性和隐私性
|
26天前
【Application Insights】使用Powershell命令向Application Insgihts发送测试数据
【Application Insights】使用Powershell命令向Application Insgihts发送测试数据
|
26天前
|
JSON Kubernetes Linux
【Application Insights】使用CURL命令向Application Insgihts发送测试数据
【Application Insights】使用CURL命令向Application Insgihts发送测试数据
|
29天前
|
XML Web App开发 数据挖掘
Postman接口测试工具全解析:功能、脚本编写及优缺点探讨
文章详细分析了Postman接口测试工具的功能、脚本编写、使用场景以及优缺点,强调了其在接口自动化测试中的强大能力,同时指出了其在性能分析方面的不足,并建议根据项目需求和个人偏好选择合适的接口测试工具。
38 1
|
30天前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
59 1
|
20天前
|
安全 数据安全/隐私保护 架构师
用Vaadin打造坚不可摧的企业级应用:安全性考虑全解析
【8月更文挑战第31天】韩林是某金融科技公司的架构师,负责构建安全的企业级应用。在众多Web框架中,他选择了简化UI设计并内置多项安全特性的Vaadin。韩林在其技术博客中分享了使用Vaadin时的安全考虑与实现方法,包括数据加密、SSL/TLS保护、结合Spring Security的用户认证、XSS防护、CSRF防御及事务性UI更新机制。他强调,虽然Vaadin提供了丰富的安全功能,但还需根据具体需求进行调整和增强。通过合理设计,可以构建高效且安全的企业级Web应用。
28 0
|
20天前
|
测试技术 数据库
确保数据访问层的可靠性:详细解析使用Entity Framework Core进行隔离的单元测试方法
【8月更文挑战第31天】在软件开发中,单元测试是确保代码质量的关键。本文通过一个在线商店的商品查询功能案例,介绍了如何使用EF Core和Moq框架实现数据访问层的隔离测试。通过模拟`ApplicationDbContext`,我们能够在不访问真实数据库的情况下对`ProductService`进行单元测试,提高测试效率并保证测试稳定性。这种方法是实现高效、可靠单元测试的重要手段。
26 0
|
22天前
|
Web App开发 敏捷开发 测试技术
自动化测试之美:使用Selenium WebDriver进行网页功能验证
【8月更文挑战第29天】在数字时代,软件质量是企业竞争力的关键。本文将深入探讨如何通过Selenium WebDriver实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。