前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Cypress接口自动化3-定义公共函数获取token给其它接口调用

Cypress接口自动化3-定义公共函数获取token给其它接口调用

作者头像
wencheng
发布2021-04-20 15:24:27
1.2K0
发布2021-04-20 15:24:27
举报
文章被收录于专栏:python 自动化测试
Cypress接口自动化3-定义公共函数获取token给其它接口调用
前言

在做接口自动化过程中会把获取token的方法定义公共函数去调用,token分为2种一种登录成功后获得token只使用一次失效,另外一种登录成功后再规定时间可以使用token超时失效。

token只使用一次失效

在commands.js中添加获取token的方法

代码语言:javascript
复制
//全局定义获取token
Cypress.Commands.add('token', function () {
   cy.request({
       url: "http://api.keyou.site:8000/user/login/",
       method: 'POST',
       headers: {"Content-Type": "application/json"},
       body: {"username": 'keyou1', "password": '123456'}
  })
      .its('body.token').as('token')
      .then(function () {
           cy.wrap(sessionStorage.setItem("Token", this.token));
      })
   cy.log("返回的token:" + sessionStorage.getItem("Token"))
})

在测试用例中调用beforeEach获取tokeo保证每次请求都会获取一个新的token

代码语言:javascript
复制
describe("获取公共接口共其它接口使用", function () {
   beforeEach("获取token", function () {
       cy.token()
  })
   it("获取用户信息", function () {
       var token = sessionStorage.getItem("Token")
       cy.request({
           url: "/configures/",
           method: 'GET',
           headers: {"Content-Type": "application/json", "authorization": "JWT " + token},
           body: {"page": 1, "size": 10, "ordering": 1}
      }).then(function (resp) {
           expect(resp.status).to.eq(200)
           expect(resp.body.count).to.eq(3)
           cy.log(resp.body)
      })
  })
})
将token写入txt一次请求全局复用

如果token有时间限制,那我们可以把token存到txt文件中,通过读取txt文件拿值。这样可以完成一次token请求,完成所有接口的复用。

token写入txt中

代码语言:javascript
复制
Cypress.Commands.add('token_txt', function () {
   cy.request({
       url: "http://api.keyou.site:8000/user/login/",
       method: 'POST',
       headers: {"Content-Type": "application/json"},
       body: {"username": 'keyou1', "password": '123456'}
  })
      .its('body.token').as('token')
      .then(function () {
           const token = this.token
           cy.writeFile('cypress/cypress_files/demo.txt', token)

      })
})

通过before调用一次token并给多个接口复用

代码语言:javascript
复制
describe("txt取token", function () {
   before("获取token", function () {
       cy.token_txt()
       cy.readFile('cypress/cypress_files/demo.txt').then((token) => {}).as('token')
  })
   it("获取用户信息", function () {
       cy.log(this.token)
       cy.request({
           url: "/configures/",
           method: 'GET',
           headers: {"Content-Type": "application/json", "authorization": "JWT " + this.token},
      }).then(function (resp) {
           expect(resp.status).to.eq(200)
           expect(resp.body.count).to.eq(6)
           cy.log(resp.body)
      })
  })
   it("返回所有项目ID和名称", function () {
       cy.log(this.token)
       cy.request({
           url: "/projects/names/",
           method: 'GET',
           headers: {"Content-Type": "application/json", "authorization": "JWT " + this.token},
           body: {"page": 1, "size": 10, "ordering": 1}
      }).then(function (resp) {
           expect(resp.status).to.eq(200)
           expect(resp.body[0].id).to.eq(1)
           expect(resp.body[0].name).to.eq('自动化测试平台项目')
           cy.log(resp.body)
      })
  })
})

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家的支持。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试 To share 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cypress接口自动化3-定义公共函数获取token给其它接口调用
  • 前言
  • token只使用一次失效
  • 将token写入txt一次请求全局复用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档