HttpRunner搭建接口自动化测试项目

 前言:前面写过一篇Pytest+Allure接口自动化测试框架搭建的博客,这篇博客学习另外一款优秀的开源的接口自动化测试框架:HttpRunner,本博客主要学习如何搭建基于HttpRunner的接口自动化测试项目

Pytest+Allure接口自动化测试框架搭建博客地址

(Python)Requests+Pytest+Allure接口自动化测试框架从0到1搭建_MRJJ_9的博客-CSDN博客

目录

环境搭建

配置JSON文件

用例参数化

_test.py文件 

查看报告

项目结构 

Gitee仓库地址

总结


环境搭建

安装httprunner

pip install httprunner

安装后查看常用命令

下载hrp,创建项目hrp

startproject httprunner_project

项目创建可参考下面的文章

httprunner 4.x学习 - 1 .环境准备与快速开始 - 上海-悠悠 - 博客园 (cnblogs.com)

配置JSON文件

JSON转YAML,YAML转JSON - 在线工具 - OKTools

JSON文件配置

配置url,url写到了配置文件env里,url=http://localhost:8080

参数传递,用$+变量名

填入请求方法,请求体

{
  "config": {
    "name": "验证登录接口",
    "base_url": "${ENV(url)}",
    "parameters": {
      "username": ["18999999999","","18999999999",""],
      "password": ["","ABCabc012!@#","ABCabc012!@#",""]},
    "verify": false
  },
  "teststeps": [
    {
      "name": "登录",
      "request": {
        "method": "POST",
        "url": "/test/login",
        "headers": {},
        "body": "username=$username&password=$password"
      },
      "validate": [
        {
          "eq": [
            "status_code",
            200
          ]
        },
        {
          "eq": [
            "body.code",
            -1
          ]
        }
      ]
    }
  ]
}

用例参数化

可以使用以下格式实现用例的参数化

这种方式参数以笛卡尔积产生的组合进行传递,即产生测试用例4*4=16条

"parameters": {
      "username": ["18999999999","","18999999999",""],
      "password": ["","ABCabc012!@#","ABCabc012!@#",""]}

下面的这种格式,对应的测试用例有四条,键使用参数1-参数2的方式,里面的值是每条用例对应的传参,例如第一条用例的username对应18999999999,密码为空

"parameters": {
      "username-password": [
      ["18999999999",""],
      ["","ABCabc012!@#"],
      ["18999999999","ABCabc012!@#"],
      ["",""]]}

_test.py文件 

自动生成的_test.py文件,里面的内容与用pytest框架写测试用例大致一样,@pytest.mark.parametrize实现参数化,发送Request请求,传递参数,进行断言,只不过HttpRunner进行了二次封装

# NOTE: Generated By HttpRunner v4.3.5
# FROM: .\testcases\login2.json
import pytest
from httprunner import HttpRunner, Config, Step, RunRequest
from httprunner import Parameters
class TestCaseLogin2(HttpRunner):
    @pytest.mark.parametrize(
        "param",
        Parameters(
            {
                "username-password": [
                    ["18999999999", ""],
                    ["", "ABCabc012!@#"],
                    ["18999999999", "ABCabc012!@#"],
                    ["", ""],
                ]
            }
        ),
    )
    def test_start(self, param):
        super().test_start(param)

    config = Config("验证登录接口").base_url("${ENV(url)}").verify(False)

    teststeps = [
        Step(
            RunRequest("登录")
            .post("/test/login")
            .with_headers(**{})
            .with_data("username=$username&password=$password")
            .validate()
            .assert_equal("status_code", 200)
            .assert_equal("body.code", -1)
        ),
    ]


if __name__ == "__main__":
    TestCaseLogin2().test_start()

查看报告

项目结构 

testcases:存放生成的测试用例,需要先配置好json文件,再用命令行自动生成对应的_test.py文件,hrun login1.json,进入testcases文件夹后,将指定json文件生成_test.py文件,或者在工程目录下,执行:hrun testcases,会自动将testcases下的所有.json文件自动生成对应的_test.py文件

配置完成并生成_test.py文件后,就可以用pytest命令运行:pytest testcases --html=reports/result.html,输出在testcases下所有_test.py文件执行用例结果得到的最终测试报告

reports:存放生成的测试报告

.env:用于存放配置文件

Gitee仓库地址

https://gitee.com/MRJJ_9/httprunner_project

总结

通过学习Httprunner接口测试框架,对接口自动化测试有了进一步的认识,Httprunner封装了Pytest,进行了二次开发,简化了接口测试用例步骤,相当于可以自动生成,但核心还是Pytest框架,无论是Pytest,还是Httprunner,都是需要定义好接口的传参和传参方式,进行用例的参数化设置,方便后期代码的维护,对于Httprunner源码的学习研究部分放到后面的博客。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MRJJ_9

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值