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, 别问我为什么报错, 因为返回内容:\n %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:\soft\projectdemo>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:\soft\projectdemo\reports\1569424911.html

2019第一期《python测试开发》课程,10月13号开学!

本期上课时间:10月13号-12月8号,每周六、周日晚上20:30-22:30

(0)

相关推荐

  • Django REST Framework教程(7): 如何使用JWT认证(神文多图)

    在前面的DRF系列文章中,我们介绍了DRF认证(authentication)的本质, 以及自带的几种认证方案,包括TokenAuthentication方案.然而JSON Web Token(JWT ...

  • httprunner 3.x学习11 - 参数化(parameters)引用外部 csv 数据文件

    前言 httprunner 3.x参数化(parameters)数据源支持三种方式: 在 YAML/JSON/py 中直接指定参数列表:该种方式最为简单易用,适合参数列表比较小的情况 通过内置的 pa ...

  • httprunner学习1-环境与登录接口案例

    前言 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试. 使用环境: python 3.6 httprunner 1 ...

  • httprunner学习2-har2case录制生成脚本

    前言 复制毁一生,录制穷三代,如果你只是因为不想写脚本,而去录制脚本,那我建议你还是别学录制了. 录制脚本,只是一个过渡,从0到1的一个过渡,如果让你直接写脚本,你会无从下手,可以将录制的脚本快速转化 ...

  • httprunner学习3-extract提取token值参数关联

    前言 如何将上个接口的返回token,传给下个接口当做请求参数?这是最常见的一个问题了. 解决这个问题其实很简单,我们只需取出token值,设置为一个中间变量a,下个接口传这个变量a就可以了.那么接下 ...

  • httprunner学习4-variables变量声明与引用

    前言 在 HttpRunner 中,支持变量声明(variables)和引用($var)的机制.在 config 和 test 中均可以通过 variables 关键字定义变量,然后在测试步骤中可以通 ...

  • httprunner学习5-参数化与数据驱动

    前言 参数化是自动化测试离不开的话题,httprunner里面只要把上一篇声明变量学会了,参数化也就自然会了. 不同的地方在于声明变量时对应值只有一个,参数化是多个值,存放在list里面. 登录参数化 ...

  • httprunner学习8-validate校验器

    前言 在一个完整的测试用例中,断言是必不可少的,断言是拿实际结果和期望结果去比较,在httprunner中用validate来对比测试结果. validate校验器 在httprunner的源码里,u ...

  • httprunner学习7-extract提取content返回对象

    前言 提取response返回的对象数据,用extract关键字.前面有关于token的取值,通过content.token取值. 本篇详细讲解如何从返回的json数据提取出想要的各种数据 conte ...

  • httprunner学习6-参数化(引用外部csv数据)

    前言 上一篇已经实现参数化,但是数据是放在.yml文件里面,当测试数据非常多的时候,我们希望把测试数据写到csv文件. httprunner==1.5.8 独立参数 对于已有参数列表,并且数据量比较大 ...