使用httprunner框架实现自动化测试—基础篇

2022-08-01,,,,

写在前面:

  • 第一次接触的自动化测试就是使用httprunner框架实现的,刚开始接触时真的是无从下手,一些理论知识及常用概念是知道的,但是需要真正的项目实践来写出东西时是一脸懵逼,好在当时大佬们把前置的路都铺好了,只需要去模仿着填空就好,接触了一段时间也实现了一小模块业务。最近开始想要去写的人多了,想把我这段时间学习下来的一些微薄经验分享一下,也算是自己的一个学习总结吧!

正文:
一、Httprunner是什么?(httprunner简介:)
Httprunner是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。——取自于百度百科

 更多介绍可以查看中文使用介绍文档: https://v2.httprunner.org/
 安装大家可以根据文档中介绍的去敲个命令就好了,这边重点强调两个我踩过的坑:
 1.安装过程中报错,这个我当时实在搞不清楚为什么敲行一模一样的命令就会报错,反正到现在我也没太明白,只是听说是自己网络问题导致的,网络断开下重新连接后在敲一次就好了,我也是这样解决掉我的报错的。
 2.安装好后,在pycharm中运行脚本报错。具体报错我没有截图,说的大概意思就是找不到一个包,但那个包却是存在的,最后查资料换了版本号就好了,好像是最新的版本在一些环境中运行不稳定导致的,推荐大家使用我们常用的一个版本:2.5.6
 可以查下你的当前版本,如果不是建议换成稳定版本,尽量使用2.x.x的版本。
 (1)查看当前版本
 httprunner -V
 (2)变更版本为2.5.6
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple httprunner==2.5.6

二、Httprunner怎样实现自动化测试?

 案例:使用httprunner实现以下的测试用例

第一步:项目准备

新建一个httprunner项目
   如下,在D盘新建了一个test的项目
备注:我们团队在做时,大佬有已经将整个项目的框架搭建起来了,所以我这边也直接拿来用了,该案例也就不再这个新的项目test上面执行了。我这边重点介绍下执行顺序和文件夹的存在作用。

补充:

第二步:分析用例,编写用例
该测试点由三个步骤组成,要执行此测试用例,必须保证每个步骤校验成功。

  • 步骤一,需要创建一个10元的优惠券:
    a:抓包,拿到创建优惠券的接口
    b:编写api,将创建优惠券的接口入参均写在api中
    api中的内容由三大部分组成:
    ##name:名字(非必须,建议有)
    ##variables:当前api中一些参数的取值(非必须)
    ##request:请求头中的必须信息(必须有)
    c: 编写testcases,将创建优惠券的api等信息引入
    testcases中的内容由两大部分组成config与teststeps:
    config:定义全局变量,作用于当前的整个测试用例
    teststeps:单个测试步骤,作用于当前单个测试步骤,每个测试步骤包含:
    ##name: 该步骤的名称
    ##api: 进行步骤要调用的api
    ##variables: 该api中的参数赋值
    ##validate: 响应值校验
    ##extract: 提取参数,用于给下一步骤使用
  • 步骤二,领取优惠券(截图类似上面,不在重复):
    a:抓包,抓取领优惠券的接口
    b:编写api,将领取优惠券的接口入参均写在api中
    c: 在testcases中编写step2,将领取优惠券的api等信息引入
    备注:此处C不一样的一个点是,领取优惠券的入参券模版ID,需要从新建优惠券的返回参数中获取,此时在step1的新建优惠券步骤中用extract定义提取参数,在step2的领取优惠券步骤中给入参提取参数值,如下值。

  • 步骤三,进入买单页面(截图类似上面,不在重复):
    a:抓包,抓取进入买单页面的接口
    b:编写api,将进入买单页面的接口入参均写在api中
    c: 在testcases中编写step3,将进入买单页面的api等信息引入

  • 步骤四,更新买单页面,买单金额填10,使用优惠券全部抵扣(截图类似上面,不在重复):
    a:抓包,抓取更新买单页面的接口
    b:编写api,将更新买单页面的接口入参均写在api中
    c: 在testcases中编写step4,将更新买单页面的api等信息引入

  • 步骤五,提交买单订单,获取支付信息(截图类似上面,不在重复):
    a:抓包,抓取提交买单订单的接口
    b:编写api,将提交买单订单的接口入参均写在api中
    c: 在testcases中编写step5,将提交买单订单的api等信息引入

  • 步骤六,获取优惠券的详情信息,校验状态(截图类似上面,不在重复):
    a:抓包,抓取优惠券的详情接口
    b:编写api,将优惠券的详情接口入参均写在api中
    c: 在testcases中编写step6,将优惠券详情的api等信息引入

  • 步骤七,获取该笔订单的详情信息,校验重点字段(截图类似上面,不在重复):
    a:抓包,抓取获取买单订单详情的接口
    b:编写api,将获取买单订单详情的接口入参均写在api中
    c: 在testcases中编写step6,将获取买单订单详情的api等信息引入

  • 步骤八,删除优惠券,清除数据(截图类似上面,不在重复):
    a:抓包,抓取删除优惠券的接口
    b:编写api,将删除优惠券的接口入参均写在api中
    c: 在testcases中编写step6,将删除优惠券的api等信息引入

    第三步:汇总测试用例集
    在testsuits中新建一个用例集,在用例集中引入分为此类的testcases路径。

    第四步:执行测试用例集
    新建一个.py的run文件,指明要执行的用例集。

    第五步:执行用例,查看报告

    总结:
    1.httprunner难吗?不会python语言可以写吗?

  • httprunner想写起来很简单,如果有大佬铺路,直接按套路填空即可不需要python代码,但是想写好也不容易,比如登录方法、参数都写活(变量=多个复杂数值的计算公式推导而出)、公共部分的封装(创建、删除优惠券)等,这些都需要有python语言的功底,难于不难取决于你的追求目标。

    2.有什么坑可以避免?

  • (1)建议开始练习时参数可以写死,一旦会了,就尽可能的让参数都活起来,不然后面越来越多,改起来相当于需要重新来写一遍了,很耗费人力,想办法让你的用例不受任何限制条件的情况下都可以运行。
    (2)运行完自己重点case后在每一步新建数据的后面都要加上清除数据的步骤,不然多次运行结果造成的大量测试数据也是很可怕的,如果名称一致,后面手动删起来也不容易。
    (3)对响应值的校验需要特别重视,就如上面案例,如果只校验订单状态,不去校验应付金额、实付金额、优惠券状态具体值时,相当于这条用例是作废的,因为很多用例场景都会有这个已支付状态,并无法知道具体是怎样的过程到达的已支付状态。

本文地址:https://blog.csdn.net/yy456258/article/details/107446382

《使用httprunner框架实现自动化测试—基础篇.doc》

下载本文的Word格式文档,以方便收藏与打印。