您现在的位置是:网站首页 > 分类 > 文章详情

接口测试开源工具httprunner

T2018年8月8日 10:03820人围观
简介官方描述:HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。

1、使用charles或则fiddler抓到你想要的接口,然后导出(我这边是使用fiddler,导出HttpArchive格式) 2、使用pip安装httprunner,如果之前没有安装过也就如下一条命令(具体环境配置可参考官方文档http://cn.httprunner.org/report/),当然如果提示你没有pip的命令,需要安装下pip先

pip install httprunner

3、配置完httprunner环境后,那么进入第①步中导出的har文件所在文件夹,执行如下命令(这里转换成yml格式,因为这个格式比较清晰点):

har2case aa.har bb.yml

4、最后就可以执行该接口了:进入转换后yml文件所在的文件夹,执行如下命令:

hrun bb.yml

5、以上就是httprunner最简单的使用,后面还需要了解下参数提取与引用、公共配置全局化、参数化、数据驱动,官方文档比较详细,这里就不一一举例了,直接参考http://cn.httprunner.org/quickstart/
6、为了使结构更加清晰,增加复用,我们可以使用下httprunner的用例分层机制,可参考下http://www.itboth.com/d/eyYnAz,重点就是我们需要创建一个脚手架,注意下执行hrun的时候需要进入helloworld这个目录,然后hrun tests/testcases/bb.yml

hrun --startproject helloworld
#创建后的目录结构如下
  api                     #文件夹存放所有接口路径
  suite                  #文件夹存放某几个api的合集,这样可避免testcases调用api时重复,增加可复用性
  testcase           #用例存放,调用suite、api都可行
  debugtalk.py   #存放公共头文件,自定义函数

7、说的这里,我们可能还需要知道下httprunner校验方式还是挺强大的,可以参考下 官方的这个文档,挺详细了 https://testerhome.com/topics/11207
8、httpruner当然也可以连接数据库,在debug.py编写连接数据库的方法,取得相关数据,但是目前貌似还无法进行拿数据库的数据跟实际数据进行比对,所以暂且不做阐述了
9、简单地添加发送邮件(修改部分源码):
1)cmd命令行下,pip install httprunne执行下会告诉你httprunner已安装在那个目录,进入httprunner目录放入sendMail.py脚本,这个脚本在下面第四点有涉及
2)再(我的是在/usr/local/lib/python3.5/dist-packages/httprunner下)修改cli.py中(在语句return 0 if summary["success"] else 1之前加一行sendMail.sendMail(summary) ,当然需要再导入包 from httprunner import sendMail)
3)以上两步后,每次执行完成都会发送邮件,可能你需要动态配置发送人,那么还需要修改下代码
4)sendMail.py文件内容如下:

ef sendMail(summary):
    # 第三方 SMTP 服务
    mail_host="smtp.**.com"  #设置服务器
    mail_user="*@*.com"    #用户名
    mail_pass="******"   #口令 


    sender = '*@*.com'
    receivers = ['*@*.com']  # 收件人,这里写死,多个的话用逗号隔开

    # 以下是发送邮件包含的内容
    mail_msg = '优送接口测试报告如下:</br><br/>&nbsp&nbsp&nbsp本次测试运行环境:test</br>&nbsp&nbsp&nbsp共执行用例:&nbsp'\
                +str(summary["stat"]["testsRun"])+'条</br>&nbsp&nbsp&nbsp失败:&nbsp'\
                +str(summary["stat"]["errors"])+'条</br>&nbsp&nbsp&nbsp成功:&nbsp'\
                +str(summary["stat"]["successes"])+"条<br/><br/<br/>如需了解下详情,请参见附件测试报告!谢谢!"

    message = MIMEMultipart()
    message['From'] = Header("john", 'utf-8')
    message['To'] =  Header("测试", 'utf-8')
    message.attach(MIMEText(mail_msg, 'html', 'utf-8'))

    report_dir_path = os.path.join(os.getcwd(), "reports")
    html_report_name = summary['time']['start_at'].strftime("%Y-%m-%d-%H-%M-%S") + '.html'
    report_path = os.path.join(report_dir_path, html_report_name)

    subject = 'httprunner接口测试报告'
    message['Subject'] = Header(subject, 'utf-8')
    att2 = MIMEText(open(report_path, 'rb').read(), 'base64', 'utf-8')
    att2["Content-Type"] = 'application/octet-stream'
    att2["Content-Disposition"] = 'attachment; filename='+html_report_name
    message.attach(att2)   # 发送时候拿到httprunner生成的报告,放到邮件的附件中

    try:
        s = smtplib.SMTP_SSL(mail_host,465)
        s.login(mail_user, mail_pass)
        s.sendmail(sender, receivers, message.as_string())

        print("邮件发送成功")
    except smtplib.SMTPException:
        print("Error: 无法发送邮件")

参考:  
http://cn.httprunner.org/report/  
http://www.itboth.com/d/eyYnAz  
https://testerhome.com/topics/11207  
https://testerhome.com/topics/11947  

文章评论

阿里云-云大使推广
阿里云-云服务器推广

微信公众号