测试平台系列(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

登录凭证没有获取到,自然就登录失败了!




相关文章
|
4天前
|
分布式计算 Shell MaxCompute
odps测试表及大量数据构建测试
odps测试表及大量数据构建测试
|
10天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
27 11
|
11天前
|
开发框架 .NET Java
C#集合数据去重的5种方式及其性能对比测试分析
C#集合数据去重的5种方式及其性能对比测试分析
41 10
|
1月前
|
监控 测试技术
slb测试会话保持功能
slb测试会话保持功能
38 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
41 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
32 1
|
2月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
2月前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
159 1
|
21天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
76 11
|
2月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
71 3