zoukankan      html  css  js  c++  java
  • Python接口自动化测试(1)

    接口自动化测试三部曲:1、构造请求  2、判断结果  3、数据库查询

    1、Python的第三方包:requests

    简介:requests可以用来做接口测试、接口自动化测试、爬虫等

    requests的环境搭建:管理员身份在cmd运行:pip3 install requests -i https://pypi.tuna.tsinghua.edu.cn/simple(pip和pip3是一样的东西,但是安装了loadrunner的接只能用pip3不能用pip了)

    requests如何做http请求(请求接口)

    1.1、导入包:import requests

    1.2、构造请求:

    如果是get请求:

    #用url存放接口地址,注意要加引号
    #获取首页轮播图接口地址
    url = "http://118.24.105.78:2333/get_title_img"    #接口地址一定是一个字符串
    h = {"Content-Type":"application/json"}
    #使用requests去请求get类型的接口,最终的返回值就是接口返回的内容了
    res = requests.get(url=url,headers=h)     #就相当于postman里边去填写接口地址
    #获取返回值:res.text
    print(res.text)

    如果是post请求:

    #post请求:用户登录接口 (依次从接口文档上填写请求地址、请求头、请求数据)
    u = "http://118.24.105.78:2333/login"     #接口地址
    h = {"Content-Type":"application/json"}    #请求头:字典格式
    d = {"username":"liuyun1","password":"a12345678"}    #请求数据:json格式、字典
    
    res = requests.post(url=u,headers=h,json=d)    #依次传参
    print(res.text)

    1.3、判断结果(以用户登录为例)

    需要判断两个结果,先是接口状态码,后是返回值结果码

    首先需要通过判断接口状态码看接口是否正确(如果接口都不正确了,就没有必要看返回结果了),然后看接口返回结果中的status是否=200,等于200标志着接口执行成功(返回的结果是字符串类型的字典格式,我们首先要将字符串真正的转换为字典,这里字符串转地址用魔鬼方法evar也不行,只能用.json()方法)

    #判断结果(要判断两个:先接口状态码和后结果返回值)
    #状态码:标志着接口的状态:预判接口是否有问题       res.status_code获取状态码
    assert res.status_code == 200     #运行这步要把前面的print(res.text)删掉或者注释掉
    #结果返回值(结果码)  接口返回的结果是放在res中了,但是它存放的是字符串类型,python中用res.json()将字符串转换为字典类型
    assert res.json()["status"] == 200

    在这里可能会遇到断言错误的问题,以注册为例

    遇到这种情况,就要排查,首先从日志中可以看出是判断结果码那块的断言报错,说明接口返回的结果码不等于200,我们可以先把接口返回的结果打印出来

    1.4、查询数据库

    使用pymysql查询数据库,由于前面已经封装好了pymysql的查询方法,要想查询数据库,首先就是将qurey方法导入进来:from dbtools import query(兄弟关系导方法)

    #查询数据库
    sql = "select * from t_user where username = '{}'".format(d["username"])
    # print(sql)   #从这里就可以看见数据库语句拼接起来了
    # r = query(sql)
    assert len(query(sql)) != 0
    print("登录成功的测试用例通过")

    注意注意:由于我们是调用的query方法,封装query()方法时的url地址一定要和构造请求的url地址一致,否则会报错(接口地址要和数据库地址一致)

    2、关联

    以登录-退出登录为例

    import requests
    from dbtools import query
    
    #登录
    u = "http://118.24.105.78:2333/login"
    h = {"Content-Type":"application/json"}
    d = {"username":"liuyun1","password":"a12345678"}
    
    res = requests.post(url=u,headers=h,json=d)
    
    assert res.status_code == 200
    assert res.json()["status"] == 200
    
    sql = "select * from t_user where username = '{}'".format(d["username"])
    assert len(query(sql)) !=0
    print("用户登录成功")
    
    #取token值
    token = res.json()["data"]["token"]
    
    #关联用户退出
    u = "http://118.24.105.78:2333/logout"
    h = {"Content-Type":"application/json","token":token}
    
    res = requests.get(url=u,headers=h)
    
    assert res.status_code == 200
    assert res.json()["status"] == 200
    print("用户退出登录成功")

    the end:

  • 相关阅读:
    百度搜索API v3版本与soap
    Yii整合ZF2及soap实例
    Getting started writing ZF2 modules
    js写出php中的函数系列
    一些有用的命令
    a标签至于flash之上的时候,IE浏览器无法点击连接的问题
    js问题集锦
    php常用函数集锦[备份用的]
    用过的一些js函数[备份用的]
    ELK
  • 原文地址:https://www.cnblogs.com/bzbz/p/13968630.html
Copyright © 2011-2022 走看看