06 接口自动化-框架封装思想建立之httprunner框架(下)

一、httprunner如何实现数据驱动

3.X开始,使用parameters定义数据源。应用于测试用例层。

第一种:直接在脚本里面指定参数列表,最简单。适合于参数比较少的情况。
config:
    name: get token
    parameters:
        appid-secret-grant_type-assert_str:
            - ["wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","client_credential","access_token"]
            - ["","e40a02f9d79a8097df497e6aaf93ab80","client_credential","errcode"]
            - ["wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","","errmsg"]
teststeps:
-   name: get token
    api: api/wx_get_token.yml
第二种:使用CSV文件,适合于参数比较大的情况。

yaml 文件:

config:
    name: get token
    parameters:
        appid-secret-grant_type-assert_str: ${P(data/get_token_data.csv)}
teststeps:
-   name: get token
    api: api/wx_get_token.yml

get_token_data.csv:

appid,secret,grant_type,assert_str
"wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","client_credential","access_token"
"","e40a02f9d79a8097df497e6aaf93ab80","client_credential","errcode"
"wx74a8627810cfa308","e40a02f9d79a8097df497e6aaf93ab80","","errmsg"

注意:

  • 1.csv文件中第一行必须放参数名称,并且参数名称必须和测试用例里面的名称一致。
  • 2.csv文件中第二行放数据,每一组数据占一行。
  • 3.parameters指定的参数顺序可以不一致,个数也可以不一致。
第三种方式:使用函数生成数据,适用于数据变化大的情况

debugtalk.py:

# 获取数据
def get_token_data():
    return [{"appid": "wx74a8627810cfa308", "grant_type": "client_credential", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str":"access_token"},
            {"appid": "", "grant_type": "client_credential", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str": "errcode"},
            {"appid": "wx74a8627810cfa308", "grant_type": "", "secret": "e40a02f9d79a8097df497e6aaf93ab80","assert_str": "errmsg"}]

yaml 文件:

config:
    name: get token
    parameters:
        appid-secret-grant_type-assert_str: ${get_token_data()}
teststeps:
-   name: get token
    api: api/wx_get_token.yml

二、httprunner文件上传

前提条件: 需要安装如下两个包

  • pip install requests_toolbelt filetype
  • pip install "httprunner[upload]"

注意:上传文件需要加上upload
yaml 文件:

config:
    name: testcase description
    variables:
        access_token: $access_token
        file_path: F:\Pycharm\TestAPI\httpframe\data\htr.png
    base_url: ${ENV(test_url)}
teststeps:
-   name: /cgi-bin/media/uploadimg
    request:
        upload:
            media: $file_path
        headers:
            Content-Type: multipart/form-data; boundary=--------------------------820438713549970031981494
            Postman-Token: fc7a57ba-802c-4c99-9226-15db86f9bd99
            User-Agent: PostmanRuntime/7.44.0
        method: POST
        params:
            access_token: $access_token
        url: /cgi-bin/media/uploadimg
    validate:
    -   eq:
        - status_code
        - 200
    -   eq:
        - headers.Content-Type
        - text/plain
    -   ne:
            - body.url
            - ""

三、如何生成allure报告

  • 第一步
    • 1.官网下载allure文件
    • 2.下载之后解压到非中文的目录
    • 3.把bin路径配置到系统变量path中:E:\allure-2.13.7\bin (注意分号不要是中文的)
  • 第二步:
    • 安装allure报告:pip install allure-pytest
    • 验证:allure --version
    • 注意:可能需要重启 pycharm。
  • 第三步:
    • 1.在reports目录下生成temps目录,并且在temps目录下生产临时的json格式的临时报告
      os.system("hrun testsuites/test_suites.yml ‐‐alluredir=reports/temps ‐‐clean‐alluredir")
      加上–clean-alluredir表示:每执行一次把原来的清除。
    • 2.根据临时json报告生成allure报告
      os.system("allure generate reports/temps ‐o reports/allures ‐‐clean")
      加上–clean表示:每执行一次把原来的清除。

四、接口自动化框架文件对应关系

一个接口对应一个yaml文件,一个yaml文件对应一个csv文件。

  • 优点:相对来说比较成熟,唯一的,不需要写脚本。
  • 缺点:规则太难了,小心翼翼,报错机制不完善。有些功能不齐全。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值