HttpRunner2.X学习--sign签名

前言:

为了安全,很多接口都会有签名机制,如果没有签名将无法访问接口

案例:

在debugtalk.py中写入签名的方法

#setup_hook 对请求的body进行预处理sign加密
import hashlib
import json
import time

def time_up():
    currentTimeStamp = time.time()
    time_mp = int(round(currentTimeStamp * 1000))
    return str(time_mp)   

def sign_body(body,apikey="12345678abc"):
    '''请求body sign加密'''
   # 提前知道接口签名的规则
    strA = json.dumps(body)

    #在strA后面拼接apikey得到strSignTemp字符串
    strSignTemp = apikey + json.dumps(body) + time_up()
    print(strSignTemp)
    sign = hashlib.md5(strSignTemp.encode(encoding='UTF-8')).hexdigest()
    # #将strSignTemp字符串转为小写字符串后进行MD5运算
    #
    # #MD5加密
    # def jiamimd5(src):
    #     m = hashlib.md5()
    #     m.update(src.encode('UTF-8'))
    #     return m.hexdigest()
    # sign = jiamimd5(strSignTemp.lower())

    return sign

def setup_request(request):
    '''setup_hooks函数,发送请求前预处理'''
    body = request.get('data')
    print(body)

    sign = sign_body(body,apikey="12345678abc")
    print("sign值:%s" % sign)
    request["headers"]["sign"] = sign #添加到请求头
    #request["json"]["sign"] = sign

if __name__ == "__main__":
    body = {
       "验证参数,检查方法是否ok"
    }

    print(sign_body(body))

用例中调用sign方法,使用setup_hooks函数

- config:
    name: sign签名
    variables: {}

- test:
    name: 登录接口
    request:
      headers:
        Content-Type: application/json
      method: POST
      url: http://localhost:80/login/
      json:
        username: test
        password: a123456
    extract: #extract 提取返回参数中的data值
      - token: content.data
    setup_hooks:
      - ${setup_request($request)}
    validate:
      - eq: [status_code,200]

 

posted @ 2021-01-29 10:52  小哈别闹  阅读(160)  评论(0)    收藏  举报