• 7
  • 6
分享
  • 测试代码是“次抛”的,你还真敢写!——软件测试圈
  • 曼倩诙谐 2020-11-23 11:20:51 字数 1657 阅读 2363 收藏 6

  应用场景:自动化测试中,当系统越来越复杂,测试的场景越来越多时,常常会遇到不同的操作步骤下需要验证重复的内容,而有时数据并不是单一的,这就需要测试人员更好地组织测试数据,提高代码的重用率,最终保证验证结果的一致性。

  学习要点: 

  ·如何读取外部数组类json文件并和返回结果做对比

  ·如何读取并引用外部feature 的结果和现有用例结果做对比

  示例中get url: 

  https://reqres.in/api/users/2

  https://reqres.in/api/users/3

  如果您想跟着以下示例操作,需要做好以下配置:

  ·测试框架: Java + Karate + Junit 5

  ·语言: Java, Cucumber

  ·IDE: Intellij IDEA

  ·项目类型: Maven

  读取外部数组类文件

  1.准备数组json文件 

  如下图所示,这是一个数组结构类型的json 文件(comparedContentMultiple.json),包含了两个json内容,分别对应本示例中两个get 返回的结果。(https://reqres.in/api/users/2  , https://reqres.in/api/users/3 )

1.png

  2.创建feature文件:test-reuse.feature 

  在场景中,get 的请求是https://reqres.in/api/users/2, 期待的返回结果应该是我们准备的数组文件中的第一个json内容(json 文件中红线框的区域)。

  在background 中定义的变量compareResponse读取了数组json文件内容后,接着在场景中用And match response == compareResponse[0]与此进行文件内容的对比(注:数组是从0开始的)。

2.png

  读取并引用外部feature 的结果

  1.创建feature 文件:testreuse-multiread.feature

  在这个场景中,get 请求是https://reqres.in/api/users/3, 期待的返回结果应该是我们准备的数组文件中的第二个json内容(json文件中蓝线框的区域)。

  代码And match response == compareResponse[1] 是对第二个json内容进行对比。

3.png

  2.读取并引用外部feature文件

  在Background 中定义的变量testvarFeature 读取了前一个feature 文件的结果。

  接着在场景中,代码* def adurl = testvarFeature.response.ad.url 中adurl 变量读取了被引用feature返回结果中ad的url的值,然后,并和当前get返回请求的ad.url进行了对比且期待它们的值相同(And match adurl == response.ad.url)。

  同时最后一行代码And match response.data.id != testvarFeature.response.data.id, 验证了两个feature 结果中data.id的值是不同的。

  常见错误

  这里列举两个常见的错误,当遇到时别慌,现看看是不是句法写对了。Karate 结合Cucumber的语法还是很是严谨的。

  1.多余的空格

  比如下面抛出的错误,是指第14行不能读取ad, 但后面 undefined in<eval> at line number 1 并不能直接地判断出错误到底在那一行。 真正的问题出现在定义变量(testvarFeature)读取文件时, read之后不能有空格。

4.png

  2.区分大小写

  比如下面这个例子,当引用定义的变量时,如果大小不一致。运行时就会抛出 ReferenceError 的错误信息。

5.png


作者:胡军英   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 近10年,技术迭代最为迅速,彻彻底底改变了人类社会的生活方式,中国互联网从无到有,发展迅猛。互联网用户量激增,已由原来的4增长至8亿+。面对当下的局势,用户体验自然就成为了互联网产品面临的最大考验。分析近年来的系统崩溃翻车事故,得出结论:性能是影响用户体验的最重要因素。一、什么是性能测试?通俗来说:利用性能测试工具或者代码对系统的相关性能指标进行的测试,用来评估系统的性能二、为什么做性能测试?性能测试是互联网+企业的“刚需”企业规模越大,性能瓶颈越明显,性能测试至关重要!性能挑战:业务复杂度提升数据级日渐庞大实时性要求提高并发压力越来越高应用面越来越广 三、功能测试与性能测试四、怎么...
            0 0 785
            分享
          • 2) 性能测试性能测试是通过施加负载来测试应用程序的稳定性和响应时间。稳定性一词是指应用程序在存在负载的情况下承受的能力。响应时间是应用程序可供用户使用的速度。性能测试是在工具的帮助下完成的。Loader.IO、JMeter、LoadRunner等都是市面上不错的工具。a) 负载测试负载测试是通过施加负载来测试应用程序的稳定性和响应时间,负载等于或小于应用程序的设计用户数。例如,您的应用程序一次处理 100 个用户,响应时间为 3 秒,则可以通过应用最大 100 个或少于 100 个用户的负载来完成负载测试。目标是验证应用程序是否在 3 秒内对所有用户做出响应。b) 压力测试压力测试是通过施加...
            0 0 1612
            分享
          • 下面是我学习的方式和方法:1.CSDN资料搜了一遍(好的文章进行下载)2.全网搜相关电子书 没有3.咨询公司培训4.微信公众号看了一遍5.找个师傅实践  6.实际参加(有机会~)CSDN上比较好的资料1.CMMI过程 参考如下https://blog.csdn.net/weixin_42312310/article/details/109465266?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165406403416781435430277%2522%252C%2522scm%2522%253A%2522...
            0 0 716
            分享
          • 关于软件测试的定义,不同学者有不同的观点,了解软件测试的定义,对于日后在工作中是很有帮助的,首先要明确测试的定义,所谓测试,就是以检验产品是否满足需求为目标。而软件测试,自然是为了发现软件(产品)的缺陷而运行软件(产品)比较标准的软件测试的定义是:在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。IEEE 标准的定义:使用人工或自动的手段来运行或测定某个系统的过程,其目的在于检验;它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。对软件测试还有一些不同的定义。G.J.Myers给出的定义:“程序测试是为了发现错误而执行程序的过程”。这个定义被软件测试业界所认可,并经常被引用...
            0 0 1147
            分享
          •   Instagram 正在为 Threads 开发一个成熟的网络应用程序,该程序将很快登陆 Windows 11 和 Windows 10 的微软应用商店。Instagram 的 Threads 应用程序在过去几个月里一直是新闻焦点,它是 Twitter 之外最方便用户使用的选择。就下载量和炒作而言,Threads 在推广上迄今已被证明是成功的,但在功能方面却落后于 Twitter 和其他基于文本的社交媒体应用。  Instagram 主管亚当-莫塞里(Adam Mosseri)表示,Threads 应用程序没有标签、完整的搜索功能或网络支持,但这种情况很快就会改变。在一系列关于 Threa...
            0 0 645
            分享
      • 51testing软件测试圈微信