zoukankan      html  css  js  c++  java
  • HttpRunner学习8--使用debugtalk.py辅助函数

    前言

    在HttpRunner中,我们的测试用例都是写在 YAML/JSON 文件中,有时候我们想借助代码来实现某些较复杂的功能,但在 YAML/JSON 中是无法直接写代码来处理的,这个时候,我们可以借助 HttpRunner 中的辅助函数 debugtalk.py 来完成。

    HttpRunner使用文档中的说明:

    • HttpRunner 的实现方式为,支持热加载的插件机制(debugtalk.py),可以在 YAML/JSON 中调用 Python 函数。
    • 具体地做法,我们可以在测试用例文件的同级或其父级目录中创建一个 debugtalk.py 文件,然后在其中定义相关的函数和变量。

    本人环境:HttpRunner V1.5.8

    测试场景

    在之前的文章 HttpRunner学习3--extract提取数据和引用 中,我们模拟的是一个学生充值金币的接口,这个接口有权限验证,我们需要先通过接口A登录,然后在接口B中进行充值操作。

    学生金币充值接口:http://doc.nnzhp.cn/index.php?s=/6&page_id=11

    在这里,我们可以借助辅助函数,在 debugtalk.py 中写python代码实现登录,并返回后续cookie进行身份验证所需要的信息,最后直接在 YAML 用例脚本中进行引用。

    通过Python代码登录获取Cookie

    首先,创建一个Python文件,文件名为 debugtalk.py ,我们需要把一个登录函数的代码写到该文件中。在这里,登录函数将直接返回后续充值操作所需要的 cookie ,格式如下:用户名=登录接口返回的sign,debugtalk.py 文件内容如下:

    import requests
    
    base_url = "http://api.nnzhp.cn"
    def get_cookie(username="test1010", passwd="aA123456"):
        url = base_url + "/api/user/login"
        headers = {
            "Content-Type":"application/x-www-form-urlencoded",
            "User-Agent": "Fiddler"
        }
        body = {
            "username": username,
            "passwd": passwd
        }
        res = requests.post(url, headers=headers, data=body)
        try:
            sign = res.json()["login_info"]["sign"]
        except:
            sign = ""
        cookie = "{}={}".format(username, sign)
        return cookie
    
    if __name__ == '__main__':
        cookie = get_cookie()
        print(cookie)
    

    上面的代码中,如果登录失败时,res.json()["login_info"]["sign"] 会提示错误 "KeyError" ,因此用 try...except 进行了简单的异常处理,当登录失败时,返回一个 "" 空字符串。

    YAML文件中引用Cookie

    在 debugtalk.py 中自定义函数返回数据后,我们要怎么去引用返回的数据呢?

    先在 debugtalk.py 同一目录下创建 YAML/JSON 测试用例文件,如在YAML 测试用例中,对 debugtalk.py 中自定义的 get_cookie() 函数进行引用,可使用 ${get_cookie()}

            Cookie: ${get_cookie()}
    

    当然,也可以在引用的时候给函数传参数,如果参数是固定值,则可以这样写 ${get_cookie(test1010, aA123456)},如果参数是变量,则是 ${get_cookie($username, $passwd)} 等。

    运行用例

    完整的YAML格式用例如下:

    - config:
        name: debugtalk test
        request:
          base_url: http://api.nnzhp.cn
    
    - test:
        name: add gold
        request:
          url: api/user/gold_add
          method: POST
          headers:
            Content-Type: application/x-www-form-urlencoded
            User-Agent: Fiddler
            Cookie: ${get_cookie()}
          data:
            stu_id: 2114
            gold: 500
        validate:
          - eq: [status_code, 200]
          - eq: [content.error_code, 0]
          - eq: [content.msg, "操作成功!"]
    

    接下来便可以运行用例了,得到后的报告如下:

    测试报告

  • 相关阅读:
    Linux 设置秘钥登录(SSH免密远程登录)
    maven profile动态选择配置文件
    PKU 1521 Entropy(简单哈弗曼树_水过)
    POJ 3253 Fence Repair(简单哈弗曼树_水过)
    XDU 1001 又是苹果(状态压缩)
    PKU 3318 Matrix Multiplication(神奇的输入)
    PKU 3318 Matrix Multiplication(随机化算法||状态压缩)
    PKU 2531 Network Saboteur(dfs+剪枝||随机化算法)
    PKU 1035 Spell checker(Vector+String应用)
    PKU 2002 Squares(二维点哈希+平方求余法+链地址法)
  • 原文地址:https://www.cnblogs.com/wintest/p/11914173.html
Copyright © 2011-2022 走看看