httprunner框架-项目实例

httprunner

作为一款比较完整的自动化框架,学习成本比较低,好上手,通用的规范性,都是其优点,但是对于复杂的测试场景还是略显捉襟见肘的,公司一直在用的就是这套系统,最近我开始维护用来做一些测试,才逐渐熟悉起来。
下面是我对这套框架使用的理解

下载安装我这里就不说了,一般的教程里都比较详细了,我这里主要讲如何进行参数化和其他的使用

1、hrun --startproject test_mysite
创建一个名为test_mysite的目录,如图:
这是自动生成的框架的目录架构 主要分成
api目录下为接口的详细信息
reports目录下为生成的报告
testcases目录下为测试用例
testsuites为测试套件
debugtalk.py文件用于编写函数辅助测试

httprunner框架-项目实例_第1张图片

1、实际当中使用的目录如下图,这是我们公司用的目录结构
这其中多了几个文件夹
common——公共部分
data——存放的是cvs的数据
logs——记录执行的日志
httprunner框架-项目实例_第2张图片
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/

你可能感兴趣的:(各类框架)