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

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

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

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

gitee仓库地址:

https://gitee.com/MRJJ_9/httprunner_project

目录

环境搭建

配置JSON文件

用例参数化

_test.py文件 

查看报告

项目结构 


环境搭建

安装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:用于存放配置文件

猜你喜欢

转载自blog.csdn.net/MRJJ_9/article/details/132160761