跟着案例敲,随意记录记录啦~
新手上路,若笔记有问题,还请诸位大佬不吝赐教~
准备说明
1、我用的是fiddler(Charles也差不多),选中我要练习的接口,点击file里面的导出选中,格式选择HTTPArchive v1.2;导出来的har格式,用har2case login.har
转成json格式,或者用har2case login.har -2
转成yaml格式。然后就开始可劲造吧~
2、用httprunner自动生成脚手架(hrun --startproject demo
),在这个基础上增删
3、我用yaml格式练习,之前没有接触过yaml,姑且先用着学着吧~
执行用例
1、把login.yaml放到testcases下,在命令行(把位置切到demo下)中输入hrun ./testcases/login.yaml
会在当前目录下的report里面生成报告(在哪里执行命令在哪里建个文件夹report(有的话就不新建),这里要注意执行位置)
2、hrun 命令里面还能(这里列的是我目前认为会经常用到的,其他的还有具体用法什么的就 hrun -h
看吧):
- 指定log等级:info(默认)、debug
- 指定log保存路径
- 指定report模板路径
- 指定report生成路径
- 设定失败即停止执行
- 保存过程数据
代码微调优
1、变量声明的关键字是:variables
2、参数化关键字是:extract
3、后续变量引用:$ + 变量名称
4、方法一般放在debugtalk.py下,这个名字不能修改(准确说是我还不会修改);
5、yaml的嵌套使用正在研究中,当前我所了解到的嵌套一般处于:
testsuits嵌套testcases,testcases嵌套testcases、或者api(这里我指的是httprunner脚手架中的文件夹名字)
config:
name: testsuite description
testcases:
testcase1_name:
testcase: /path/to/testcase1
testcase2_name:
testcase: /path/to/testcase2
HttpRunner的数据驱动小小的探究了一下,继续记录~ ~
参数配置案例
在testsuites下面的的loginsuit.yaml
config:
name: login testsuites
testcases:
login:
testcase: ../testcases/login.yaml
parameters:
# 指定单个参数
username: ['13812345678','13912345678']
# 两个关联参数
username-password:
- ['13812345678','e10adc3949ba59abbe56e057f20f883e']
- ['13912345678','e10adc3949ba59abbe56e057f20f883e']
# csv 单个参数
username: ${P(../data/user.csv)}
# csv 两个关联参数
username-password: ${P(../data/user-pwd.csv)}
# 函数获取两个关联参数
username-password: ${get_user_pwd(2)}
- 相对路径:
../
表示上一级,避免使用绝对路径,尽量使用相对路径。 - 有对应关系的参数把
-
放在参数间 - 在 YAML/JSON 测试用例文件中,通过内置的 parameterize(可简写为 P)函数引用 CSV 文件
${P(../data/user-pwd.csv)}
- 除了以上两种方法外,还可以使用自定义函数,但要注意:在自定义函数中,生成的参数列表必须为 list of dict 的数据结构,该设计主要是为了与 CSV 文件的处理机制保持一致。
示例如下:
# 指定单个函数
def get_user():
return [
{"username": 13812345678},
{"username": 13812345679}
]
# 两个关联参数
def get_user_pwd(num):
user_pwd = []
for index in range(1, num+1):
user_pwd.append(
{"username": "1381234567%s" % index, "password": 'e10adc3949ba59abbe56e057f20f883e'},
)
return user_pwd
另:如果parameters中的参数有多个(比如:3个参数),每个参数都对应多个值(比如:三个参数分别对应2个值、3个值、4个值),最后用例执行个数为他们的笛卡尔积(即:234=24个)