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

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

大家好,我是米洛,一个测试开发博主!

回顾


上篇已经编写了添加数据构造器的相关方法,现在我们就来运动到用例中去。

编写根据case_id查询所有构造器方法


12.jpg

这里是为了找出我要运行的case的所有数据构造方法

编写查找数据构造器方法


  • ConstructorDao添加static方法

13.jpg

image

不为别的,因为我们如果判断case有数据构造数据,那我们就要获取到这个数据呀!

改造Executor类


  • 新增解析参数的方法

14.jpg

image

还记得之前我们全局变量替换变量的内容吗?当时是只替换headers,body等内容,其实不太全面。

一个TestCase类,里面有太多字段了。我们取数据以后,每个字段都需要check一遍,所以这里遍历一个testcase的所有字段,去里面挖掘变量,这样会最全面。(效率也会比较低,但是由于我们的数据构造器只告诉了返回,并没告诉具体在哪用,所以这样的过程是有必要的)

这里有个特例,request_header我们本身已经是处理为json字符串了,所以里面的数据天然是字符串,我们不需要进行一次序列化

  • 尽管装饰器自动生成了不少日志,但是还是不够

15.jpg

我们需要可以手动写入日志的功能,于是封装了append方法


  • 新增获取构造数据和执行构造数据方法

16.jpg

image

可以看到,目前构造器只支持了type == 0也就是测试用例类型。如果是case类型,那么Executor会再次生成一个,去执行用例中的用例,最终拿到result信息,并根据我们设定的value,把case执行的数据全部塞给传递进来的params字典。

这个过程就记录了所有构造条件里面的数据,为将来取数据做好了铺垫。

改造run方法


17.jpg

image

新增了3个参数,分别是params_pool,request_param和path。

解释一下:

  • params_pool
    这个是总体的全局的数据池,从第一个用例开始积累,所以我们约定,不要填写重复的返回值
    比如构造器1返回变量value1,构造器2返回变量value2,那最终这个params_pool的内容会是:


{
  "value1": value1返回数据,
  "value2": value2返回数据
}
  • request_param
    在上一篇漏掉了个内容,我们有一个动态参数的字段。因为我们用例参数如果写死会很难用,所以我们要让用例动起来,而不是死数据,但又不是全局变量那么刻板。
    所以我们需要让用例能接受对应的数据去执行,比如一个登录用例,里面写了用户名是abc,这里我传入我这个场景需要的用户woody就可以达到通过参数修改用例的目的

18.jpg

image

  • path
    这个很好理解,我的case路径。比如我是A用例,在执行A的构造条件1->B用例,那么为了不让我凌乱,我会给出一个path:
    A->B, 这样就会比较好区分。
    再讲讲用例的细节,我们按照step(注释有写)将用例过程拆分,这样思路就很清晰了。

回到最初的例子


我们还是得先登录,再通过JSESSIONID去请求获取用户列表接口的。

我们应该怎么做呢?

  1. 编写一个登录用例

19.jpg

编写用例基本信息

20.jpg

header信息

27.jpg

body信息

测试一下:

21.jpg

测试成功,能够正常登录


  1. 把登录用例添加为查询所有用户列表的数据构造器
  2. 取数据

我们登录后,需要用到cookie里面的JSESSIONID。

22.jpg

image

注意这里,我们把登录后的变量设置为了blog_login,通过cookies.JSESSIONID拿到对应的数据,并传递给当前用例。

看看效果:

23.jpg

成功拿到response

由于日志不太友好,后续还得改造。断言也没有添加,还需努力呀!

如果修改或者写错这个变量:

24.jpg

故意写错SESSIONID

25.jpg

可以看到变量替换失败了

26.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实现自动化测试,确保网页应用的可靠性和性能。我们将从基础设置到编写测试用例,逐步引导读者掌握这一强大的测试工具,同时分享实战经验,让测试不再是开发的负担,而是质量保证的利器。