python接口自动化(组合接口联调测试)

1.接口联调测试业务分析

接口联调测试的原因及价值分析
原因:一个单独的接口无法完成所有的功能的实现,接口组合起来才能实现完整的业务,还有就是多个接口之间本身就存在依赖关系,接口联调测试就是按照业务要求,把接口进行组合测试,而不是一个一个独立测

价值:可以通过接口的联调测试来看接口之间相互调用时,它是不是正确的,调用关系发生的时候会不会出现一些异常情况,接口组合起来能否能否完成预定的业务,也是需要考虑的;接口之间的依赖关系是否能够正确的实现。

接口联调测试计划分解
1.接口联调业务分析-----------接口整体的认识,接口之间能做什么样的业务
2.接口测试联调测试设计-------怎么组合
3.使用工具执行,验证接口联调能否泡桐
4.编写接口联调测试脚本
5.总结

1.接口联调测试业务分析:
对所有接口有一个全局的认识:接口名称,接口功能、接口参数、接口返回值;列一个表格,把抽象的任务转化未具体的成果物

2.针对接口流程和场景,接口联调设计方案

用户找回密码业务做接口联调组合设计:
思考:要用户找回密码首先得要登录才能找回密码,而要登录首先得从注册开始,所以说整个流程是这样的:注册,登录、忘记密码、提交密保、修改密码、再登录看看新密码有没有生效;整个业务场景牵扯到五个接口的调用

在这里插入图片描述

3.cookie、session和token三种身份验证的区别

cookie:cookie文件保存的用户信息是在本地,比如用户登录,登录的时候服务器会判断登录的用户输入信息是不是合法用户,如果是合法用户会继续在浏览器本地判断是否有相应的cookie文件,如果本地没有存在cookie文件,会在本地生成一个cookie文件,如果已经存在,有可能就会更新cookie内容,cookie会加密存储在本地;每次发cookie请求包的时候要把cookie带上,服务器就知道目前登录的是哪一个用户,cookie保存的可能是用户身份信息或是操作习惯,cookie可以删除,删除后重新登录可以重新再生成

session:session保存的用户信息是在服务端,比如用户登录,登录的时候服务器会判断用户信息是否合法,如果是合法用户,服务器端就会产生一个随机的sessionID发送给客户端,sessionID有时候也可能保存在cookie文件里面,也有可能是临时放在内存里面,保存的机制不一样,原理也不一样,把sessionID发送给客户端之后,由客户端后续所发出来的所有的请求每次都会带着这个sessionID,让服务器来识别这个用户是不是合法用户,sessionID是随机生成的并且有时间限制,一般来说可能一个网站对一个sessionID的时间设置可能就是30分钟左右,也就是说,超过时间限制会让客户端再次登录,这就证明这个sessionID已经失效了,sessionID失效了就会拒绝访问然后重新登录,有效就可以继续访问

token:token是通过令牌的方式保存的用户信息,比如登录,登录的时候也是会判断用户是不是合法用户,如果是合法用户服务器端会随机产生一个token令牌发送给客户端,服务器给客户端发送令牌之后就可以访问新的页面了,token也是有时间限制的,失效就拒绝访问,有效就继续访问

token和session的区别session只支持在一个系统中使用,服务器端发出的sessionID是一个应用程序对应一个服务器端,sessionID不支持第三接口调用;token可支持访问第三方网站或者系统,也就是说只要使用统一的token规则,只要是这个token被发出来之后,所有跟系统相关的或是第三方的都是可以识别的

问题:在一个浏览器携带session登录之后再换一个浏览器登录,sessionID是重发还是用原来的sessionID?
不同的系统是不一样的,一般来说,服务器发现客户端不一样,就会认为是一个不同的用户,就会要求重新再登录一回

4.编写接口联调测试脚本

前期准备工作:准备好所有接口的联调分析文档:接口请求地址,传入参数,预期相应结果。只进行正常数据的接口测试
类的设计图
步骤:1.类的设计,2.脚本的实现,3.每完成一个接口进行一次调试
1.接口联调的测试设计(类的设计)
类的设计方法1:一个接口对应一个类,接口比较少时可以采用(3个左右)
类的设计方法2: 设计一个类对应多个测试方法,一个测试方法进行一个接口测试(联调用这种方式)
联调测试业务包含5个接口:定义一个类,定义5个方法,一个方法对应一个接口测试;参数包含:请求URL,接口参数;返回值:响应结果
每一个测试方法具体实现过程:
1.设置接口请求地址
2.设置接口参数
3.发送请求并接收响应
4.对响应结果进行判断:测试通过,测试失败
2.接口脚本的实现
1.先把类定义好
2.实现一个方法就调试一个方法:main函数中进行
3.方法调试通过后,再加入其他的方法
3.每完成一个接口进行一次脚本的调试
脚本调试,如果发现有问题,在程序中可以加入相应的print语句,打印程序中间的数据,如果发现接口实现存在的问题,就要及时提单和开发进行沟通确认了

脚本案例演示
提交密保测试方法中用到的eval测试方法:把获取到的token字符串转换成字典值,然后把字典的键赋值给变量token

# coding:utf8
# 针对多个接口进行联调测试,接口流程如下:
# 1.用户注册接口
# 2.用户登录接口
# 3.忘记密码接口
# 4.提交密保问题答案接口
# 5.回答完密码问题后修改密码接口

# 定义一个接口联调测试类
import requests


class Workflow_forgetpassword_test():

    def register_test(self):
        """用户注册接口与测试"""
        url = "http://xxxxxxxn/user/register.do"
        # 正确的用户数据
        userinfo = {
   }
        userinfo = {
   "username": "李四2",
                    "password": "123456",
                    "email": "1244156@qq.com",
                    "phone": "13254678676",
                    "question": "最喜欢的书",
                    "answer": "倚天屠龙记"}

        # 发送注册请求并获取响应结果
        response = requests.post(url, data=userinfo).text
        print(response)
        msg = response.find("注册成功")
        if msg > 0:
            print("用户注册接口测试通过")
        else:
            print("用户注册接口测试失败")

    def login_test(self):
        """用户登录接口测试"""
        url = "http://xxxxxxx/user/login.do"
        # 输入以注册的用户数据
        userinfo = {
   }
        userinfo = {
   "username": "李四2",
                     "password": "123456"}
        # 发送登录请求获取响应结果
        response = requests.post(url, data=userinfo).text
        print(response)
        msg = response.find("登录成功")
        if msg > 0:
            print("用户登录接口测试通过")
        else:
            print("用户登录接口测试失败")

    def Forgetpassword_test(self):
        """忘记密码接口测试"""
        url = "http://xxxxxxxxx/user/forget_get_question.do"
        userinfo = {
   }
        # 忘记密码对应的用户
        userinfo = {
   "username": "李四2"}
        # 发送忘记密码接口并获取响应结果
        response = requests.post(url, data=userinfo).text
        print(response)
        msg = response.find("最喜欢的书")
        if msg > 0:
            print("用户忘记密码接口测试通过")
        else:
            print("用户忘记密码接口测试失败")

    def tjwtmbda_test(self):
        """提交密保答案接口测试"""
        url = "http://xxxxxxxx/user/forget_check_answer.do"
        userinfo = {
   }
        # 密保问题答案
        userinfo = {
   "username": "李四2",
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值