接口自动化的关联

一. 在所有的平台中,凡是有往数据库中增加的接口,必然有相应的查询接口

二. 接口的后台服务除了要把数据返回给我们之外,还要把真正对数据库修改的操作写入数据库

三. 不知道接口实现的逻辑,不知道开发先去更新数据库,还是先给我们返回数据

四. 因此有两种方式,一种是调用相应的查询接口,一种是直接查询数据库(1. 如果系统复杂,有可能查询的语句非常复杂,测试无法自己写,需要开发协助,成本比较高, 2. 不是所有的产品都需要查询数据库,除非对数字、授权比较敏感),因此能用查询接口,就用查询接口

五. 期望结果的两种匹配方式:1. 全值匹配, 2. 正则表达式匹配

六. 有时需要把接口返回的结果作为期望结果存在excel中,有时返回结果很长,已经超过了excel单元格的范围,这种情况下,可以将返回结果写入到文件中,把文件地址直接写在excel单元格中。数据的两种存储方式:1. 直接写在excel中,2. 存储在文件,注意,需要添加一列专门来表达存储的类型(如果存储类型为2,表示要从文件中读取)

七. APP测试中的token,类似于web中的cookie,就是一个用户的身份令牌,登录时向服务器申请身份认证,身份认证成功后服务器向用户返回了一张"通行证",拿到了token值,用户再系统中有很多资源的,比如个人信息、投资记录、余额等等,如果没有权限认证,那么任何人就可以拿走你的钱,就变得很不安全。为了保证别人不去操控你的数据,所以必须向服务器做任何操作时(比如获取个人信息、修改用户余额、充值投资等等),必须每次都告诉服务器你是谁,每次必须带token去验证。token一般都是在登录时生成,而且有有效期的。这就类似于一种关联,token是登录接口的返回数据的一部分,后续的其他接口都要在请求数据中带着这个token(接口之间是由依赖关系的,接口A的返回值的一部分作为接口B的入参)

八. 两种方案:1. 从数据库或缓存中查  2. 从接口的返回值中提取(jmeter或postman都有用到)

九. 有个投资接口的请求数据是: "memberid": "${userid}",而userid是充值接口返回数据的一部分,那么我们需要做两件事,1. 从充值接口返回值中提取,2. 再把提取的值赋值给投资接口的请求数据。考虑到提取和赋值都是运行测试用例的过程中进行的,也就是动态的,而且还不确定有多少个接口要用到这个值,因此提取出来的值需要所有的测试用例都要识别到,用得到(比如把接口A返回的值存储在一个变量中,接口B、C、D都能取到这个值),因此需要变成一个公共变量(全局变量),

十. 步骤

  1. 告诉代码,哪一个测试用例,是需要提取返回结果当中的值。在excel数据中添加一列"提取表达式",在这一列中,如果有值(提取的正则表达式),表示要提取,先提取赋值再断言,如果没值,直接断言
  2. 再提取,正则表达式提取
  3. 告诉代码,哪一个测试用例要用到提取的值,在哪个位置用?占位符来表示被替换的数据
  4. 将提取的值变成全局变量,变成键值对,声明一个py模块文件中的全局变量,global_var  一个字典类型,在得到接口的响应结果后,判断是否需要提取,如果需要提取,则将提取的结果,存入到global_var当中,以供后续其他接口调用
  5. 在接口请求之前,判断global_var是否有值并且请求数据不为空的情况下,则进行替换操作

原文地址:https://www.cnblogs.com/cnhkzyy/p/9158151.html

时间: 2024-07-30 15:57:23

接口自动化的关联的相关文章

python接口自动化-参数关联和JSESSIONID(上个接口返回数据作为下个接口请求参数)

参数关联是接口测试和性能测试最为重要的一个步骤,很多接口的请求参数是动态的,并且需要从上一个接口的返回值里面取出来,一般只能用一次就失效了.最常见的案例就是网站的登录案例,很多网站的登录并不仅仅只传username和psw两个参数,往往有其它的动态参数.有时候还需要带上cookies参数,如JSESSIONID 登录参数 首先分析下目标网站[学信网:https://account.chsi.com.cn/passport/login]的登录接口请求参数.先随便输入账号和密码,使用fiddler工

python接口自动化5-session关联

前言 我们不难发现浏览器中存在着cookie缓存等,但我们在python中如果像浏览器这样的缓存,我们就很难的需要关联cookie或会话了. 但python的requests库,就封装了Session方法.Session类实现会话对象.就好比如是python中的浏览器. 一.Cookie 与 Session 的区别 1.Cookie,也用复数Cookies,就是为了辨别用户身份.进行 Session 跟踪而储存在用户本地终端上的数据,通常要加密,而Cookie数据存放在客户的浏览器上: 2.Co

python接口自动化7-参数关联

前言 我们用自动化发帖之后,要想接着对这篇帖子操作,那就需要用参数关联了,发帖之后会有一个帖子的id,获取到这个id,继续操作传这个帖子id就可以了 一.删除草稿箱 1.我们前面讲过登录后保存草稿箱,那可以继续接着操作:删除刚才保存的草稿 2.用fiddler抓包,抓到删除帖子的请求,从抓包结果可以看出,传的json参数是postId 3.这个postId哪里来的呢?可以看上个请求url地址 4.也就是说保存草稿箱成功之后,重定向一个url地址,里面带有postId这个参数.那接下来我们提取出来

python接口自动化10-token登录

前言 有些登录不是用cookie来验证的,是用token参数来判断是否登录. token传参有两种一种是放在请求头里,本质上是跟cookie是一样的,只是换个单词而已:另外一种是在url请求参数里,这种更直观. 一.登录返回token 1.如下图的这个登录,无cookies 2.但是登录成功后有返回token 二.请求头带token 1.登录成功后继续操作其它页面,发现post请求的请求头,都会带token参数 2.这种请求其实比cookie更简单,直接把登录后的token放到头部就行 三.to

python接口自动化8-参数化

前言 前面一篇实现了参数的关联,那种只是记流水账的完成功能,不便于维护,也没什么可读性,接下来这篇可以把每一个动作写成一个函数,这样更方便了. 参数化的思维只需记住一点:不要写死 一.登录函数 1.s参数是session的一个实例类,先放这里,方便写后面代码 2.登录函数传三个参数,s是需要调用前面的session类,所以必传,可以传个登录的url,然后payload是账号和密码 二.保存草稿 1.编辑内容的标题title和正文body_data参数化了,这样后面可以方便传不同值 2.这里返回了

Jmeter_接口自动化基础流程概述

1:创建一个线程组 2:添加一个cookie管理器   测试开发交流群 317765580 3:设置你的信息头管理器:application/json;text/plain;charset=UTF-8  测试开发交流群 317765580 44 4:添加一个用户参数,做全局变量使用.此处将url写成全局变量,后期只需要在此处修改url,而不需要去每一个接口中单独调整  测试开发交流群 317765580 5:添加一个默认请求值,这里的参数设置之后可以作为后期所有接口脚本模板,不需要重复填写 6:

python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

前言 1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 运行完后,重新生成一个excel报告,结果写入excel 用unittest+ddt数据驱动模式执行 HTMLTestRunner生成可视化的html报告 对于没有关联的单个接口请求是可以批量执行的,需要登录的话写到setUpclass里的session里保持cookies token关联的

2020年第二期《python接口自动化+测试开发》课程,预售!

2020年第二期<python接口自动化+python测试开发>课程,12月15号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:12月15号-3月29号,每周六.周日晚上20:30-22:30 报名费:报名费3000一人(周期3个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.fiddler抓包与接口测试(测试基础必备) 2.python+pytest框架实现接口自动化测试(pytest框架甩unittest几条街) 3.httpr

2020年第三期《python接口自动化+测试开发》课程,4月5号开学(火热报名中!)

2020年第三期<python接口自动化+python测试开发>课程,4月5号开学(火热报名中!) 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:4月5号-6月27号,每周六.周日晚上20:30-22:30 报名费:报名费3000一人(周期3个月) 联系QQ:283340479 课表如下 课程主要涉及的内容: 1.fiddler抓包与接口测试(测试基础必备) 2.python+pytest+allure框架实现接口自动化测试(pytest框架甩unittest几条