httprunner踩坑记03-->debugtalk.py中的方法传参

前言

     别把生活想得太重,别把自己看得太轻。

一、debugtalk.py介绍

  辅助函数,可在debugtalk.py文件中自定义函数,完成一些yml测试脚本完成不了的功能。

二、debugtalk.py 应用举例

# debugtalk.py 中存在方法

# 产生1个自定义范围的随机数
def  get_randomint(n,m):
      return random.randint(n,m)

# 默认产生3个自定义范围的随机数(参数化时使用)
def get_randomints(n,m,count=3):
    random_list = []
    for i in range(0,count):
        random_list.append( random.randint(n,m) )
    return random_list

在测试用例文件中调用上述函数的格式如下:

- config:
    name: "验证百度搜索是否正确"
    base_url: "https://www.baidu.com"
    variables:
      - search_word: ${get_randomint(1,20)}

- test:
    name: "百度搜索请求"
    request:
      url: "/s"
      method: GET
      headers:
        User-Agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36"
        Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"
        Accept-Encoding: "gzip, deflate, br"
        Accept-Language: "zh-CN,zh;q=0.9"
      params:
        wd: $search_word
    validate:
      - eq: ["status_code",200]

如上测试用例yml文件内容,在 config 的 variables 下 调用了debugtalk.py文件中的get_randomint函数。并把函数返回值传递给了定义的 search_word 变量。

三、debugtalk.py 传参时的小问题

# debugtalk.py文件内容

def  pri(content):
      print(content)

通过上述代码可以发现 debugtalk.py 文件中有一个输出到控制台函数,需要传入一个 content 参数,平时传参用起来没有问题。但如下面事例代码时:

- config:
    name: 验证能否打开主网页
    base_url: http://www.hnxmxit.com
# 测试步骤
- test:
    name: open hnxmxit mainpage api
    setup_hooks:
       - ${pri(step_01:打开新梦想主页)}
    request:
      url: /
      method: GET
    validate:
      - eq: ["status_code",200]

如上述代码, setup_hooks中调用了pri方法,传递的参数中包含 英文 : 号,会导致调用该pri方法失效。类似的字符串有 [] 、: 。解决方法是去掉 : 等

四、小结

  欢迎广大读者们提出对该博客有遗虑的地方,或者有办法解决上述问题的朋友都可以加V、QQ私聊。
原文地址:https://www.cnblogs.com/dream66/p/13112648.html