作为一款比较完整的自动化框架,学习成本比较低,好上手,通用的规范性,都是其优点,但是对于复杂的测试场景还是略显捉襟见肘的,公司一直在用的就是这套系统,最近我开始维护用来做一些测试,才逐渐熟悉起来。
下面是我对这套框架使用的理解
下载安装我这里就不说了,一般的教程里都比较详细了,我这里主要讲如何进行参数化和其他的使用
1、hrun --startproject test_mysite
创建一个名为test_mysite的目录,如图:
这是自动生成的框架的目录架构 主要分成
api目录下为接口的详细信息
reports目录下为生成的报告
testcases目录下为测试用例
testsuites为测试套件
debugtalk.py文件用于编写函数辅助测试
1、实际当中使用的目录如下图,这是我们公司用的目录结构
这其中多了几个文件夹
common——公共部分
data——存放的是cvs的数据
logs——记录执行的日志
testcase里面都是抓取过来并改造过的请求,我这里使用fildder抓取的
base_url 是IP地址头,这里统一用用函数写入
在debugtalk.py 文件里编写函数getBaseUrl
baseUrl = 'http://XXXXXX'
#获取baseUrl
def getBaseUrl():
return baseUrl
{
"config": {
"name": "add user",
"variables": {},
"base_url": "${getBaseUrl()}"
},
"teststeps": [
{
"name": "/restconf/operations/*******-security:add_user",
"request": {
"url": "/restconf/operations/*****-security:add_user",
"method": "POST",
"headers": {
"Authorization": "Basic YjEzMzllM2Q1MTkyZmRlY2YxMWE4YmIxODmViNDdiNA==",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36",
"Content-Type": "application/json"
},
"json": {
"input": {
"user_name": "$userName",
"password": "$password",
"description": "",
"access_profile": "0",
"email": "",
"idle_session_timeout": 120,
"expired": "0"
}
}
},
"validate": [
{
"eq": [
"status_code",
200
]
},
{
"eq": [
"headers.Content-Type",
"application/json"
]
}
]
}
]
}
testsuite 里面是以testcase里面为基础,参数化的data数据也在写在里面,一些引用variables也会写在里面
{
"config": {
"name": "add user",
"variables": {
"dataEnv": "${getDataEnv()}"
},
"base_url": "${getBaseUrl()}"
},
"testcases": {
"addUser": {
"testcase": "testcases/sysmanagement/adduser.json",
"parameters": {
"userName-password-fullName": "${P(data/$dataEnv/sysmanagement/adduser0.csv)}"
}
}
}
}
variables :里面可以使用在debugtalk.py 编写的辅助函数${函数名}
testscase : testcase的地址 可以添加多个
parameters: 请这里是参数化的文件,前面是表头名字通过 - 连接 ,后面是csv的具体地址 ,
格式是${ p ( csv地址 ) }
csv的数据如下:
userName,password,fullName
test1,123456,test1
test2,123456,test2
最后的执行,可以写入.sh的方式执行,也可以写一个run.py来执行
以下是.sh文件的方式执行
#!/bin/bash
# BUILD_TAG=jenkins-Auto_Test
hrun ./testsuites/alarm/addUser.json --report-file /home/reports/$BUILD_TAG/addUser.html --save-tests
sleep 1
hrun ./testsuites/alarm/editUser.json --report-file /home/reports/$BUILD_TAG/$BUILD_TAG/editUser.html --save-tests
sleep 1
hrun ./testsuites/alarm/delUser.json --report-file /home/reports/$BUILD_TAG$BUILD_TAG/delUser.html --save-tests
执行过后生成的报告数据会在reports目录下生成,查看报告即可
参考:
https://cn.httprunner.org/