• httprunner学习11-辅助函数debugtalk.py


    前言

    在httprunner里面,每个 YAML / JSON 文件的脚本都是独立运行的,有时候我们希望能跨文件使用公用的参数。
    比如登录生成一个token,后面的用例都可以去引用这个token值,或者有些复杂的逻辑,需要写个函数去实现,比如操作数据库,加密解密等。
    httprunner中可以使用 debugtalk.py 写辅助函数,实现复杂的功能。

    登录函数获取token

    新建一个debugtalk.py文件,写个登录函数,返回token值

    import requests
    
    host = "http://127.0.0.1:8000/"
    
    def token(user="test", psw="123456"):
        '''
        登录获取token         # # 上海悠悠,QQ交流群:750815713
        :param user: 用户名
        :param psw: 密码
        :return: token
        '''
        login_url = host+"api/v1/login/"
        headers = {
            "Content-Type": "application/json"
        }
        body = {
            "username": user,
            "password": psw
        }
        r = requests.post(login_url, headers=headers, json=body)
        try:
            return_token = r.json()["token"]
        except:
            print("大兄弟,返回的不是标准json格式,或者没取到token, 别问我为什么报错, 因为返回内容:
     %s" % r.text)
            return_token = ''
        return return_token
    
    if __name__ == "__main__":
        print("获取到token值:%s" % token())
    

    运行结果:

    获取到token值:e388bfc10ca99135d1d58c00a1091311a0f0d48c
    

    引用token

    debugtalk.py 同一目录下新建一个 test_info_demo.yml 文件,引用 debugtalk.py 里面的函数使用${token()}

    - config:
        name: logincase
        variables: {}
    
    # 上海悠悠,QQ交流群:750815713
    - test:
        name: get user info case1
        request:
            url: http://127.0.0.1:8000/api/v1/user/info/
            method: GET
            headers:
                Content-Type: application/json
                User-Agent: python-requests/2.18.4
                Authorization: Token ${token()}         # 引用token
        validate:
            - eq: [status_code, 200]
            - eq: [headers.Content-Type, application/json]
            - eq: [content.0.age, 20]
            - eq: [content.0.name, yoyo]
            - eq: [content.0.mail, 283340479@qq.com]
    

    给函数传参数,可以使用 ${token(test1, 123456)} 或者传变量 ${token($user, $psw)}

    运行用例

    hrun test_info_demo.yml

    D:softprojectdemo>hrun test_info_demo.yml
    get user info case1
    INFO     GET http://127.0.0.1:8000/api/v1/user/info/
    INFO     status_code: 200, response_time(ms): 199.26 ms, response_length: 190 bytes
    INFO     start to validate.
    .
    
    ----------------------------------------------------------------------
    Ran 1 test in 0.653s
    
    OK
    INFO     Start to render Html report ...
    INFO     Generated Html report: D:softprojectdemo
    eports1569424911.html
    
  • 相关阅读:
    INFORMIX体系效能改善第一步
    Ubuntu判袂率不正常的一种复杂治理措施
    ubuntu8.04分区分配方案
    计算机启动更快的十五招
    理顺 JavaScript (13) 对象及 json
    获取指定地址的 JPG 图片 回复 "bangrj" 的问题
    理顺 JavaScript (14) constructor 与 instanceof
    理顺 JavaScript (9) Date 类
    用 API 提取、写入指定网站的 Cookie 回复 "bangrj" 的问题
    理顺 JavaScript (10) Math 类
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/11588363.html
Copyright © 2020-2023  润新知