专栏首页用户6517667的专栏接口自动化测试:快速敏捷迭代的业务类产品适合做接口自动化测试

接口自动化测试:快速敏捷迭代的业务类产品适合做接口自动化测试

来源:https://www.testwo.com/

前序

当前互联网产品迭代速度越来越快,现在很多业务类产品一周发两个版本,甚至更多。每次发版之前都需要对所有功能进行回归测试,在人力资源有限的情况下,做自动化测试很有必要。

由于UI更新较快,如若页面交互比较复杂,UI自动化测试将变得更加难以维护,相较之,接口自动化就显得比较简单且易于维护。

此外,UI自动化测试其操作的也是数据,因此接口自动化是最简单的,最直接的测试方法。

如何做接口测试

本文主要讨论通过 request 库模拟发送 Http 请求,主要是 get、post 请求,同时使用 unittest 库来写测试 case,首先需要导入这两个库 import requests, unittest。

get、post 请求的区别

get:1.从服务端获取数据 2.其请求的参数拼接在 url 地址后,所以可能导致信息的泄露,因此是非常不安全的。

post:1.向服务端发送数据,可能导致服务端数据的变更 2.其请求的数据在请求的body 里面,较 get 请求安全些。

模拟get请求

querystring = {"key":"value"}

response =requests.get(test_url,params=querystring)

模拟post请求

data={

"key1":"value1",

"key2":"value2"

}

//一般情况下是json格式的数据,记得两个参数间应用逗号隔开

headers = {

'Content-Type': "application/json",

'Cache-Control': "no-cache",

'cookie':"***********”

}

//这些参数可通过抓包工具,如

fiddlers,charles 中 request 中获取

response=requests.post(test_url, data=data, headers=headers)

#response=requests.post(test_url, data=data, headers=headers)

当headers里面没有传必须的cookie时,可在方法里面直接提交

#response=requests.request('POST',test_url, data=data, headers=headers)

一般不用这种方法,知道就行了

测试中肯定会有一件头疼的事情,那就是有依赖的业务如何测试,比如很多都是基于登录状态的。

response=requests.post(test_url, data=payload,headers=headers) //获取请求

response_cookies=response.cookies //获取cookies对象

session=response_cookies.get('SESSION_ID') //获取sessionid

cookies={ //组合成cookie对象

'SESSION_ID':session

}

get、post请求可以实现了,自动化测试当然少不了断言了,代码没有人的主观判断。

这个时候要用到

assert,assertEqual,assertNotEqual,assertTrue,assertIsNone,assertIsInstance 等方法。

python 中 assert 断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。assert TRUE,“ERRORMSG”

接口自动化测试报告

发送测试报告,借助 HTMLTestRunner

如 mock 测试数据,等等,后续再写。

欢迎参加众测:

https://wap.ztestin.com/site/register?usercode=FAAAQwMQGAAXAwQBA3QhExcDHAQDPjVaABMIQg%3D%3D

本文分享自微信公众号 - 软件测试培训(iTestTrain),作者:软件测试培训

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-10-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于Django的电子商务网站开发(连载38)

    顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscr...

    小老鼠
  • 前端协作流程

      在拿到交互原型或视觉稿以后,前端工程师要能够灵活应用前端知识技能,完成相应的功能。在实际的企业环境中,不只是有前端工程师,更多的场景和项目是通过团队多人协作...

    小老鼠
  • 数据库测试场景实践总结

    应用锁定数据表,写入数据库失败,数据库对象写入SSDB中,通过SSDB重试,数据表解锁后,通过SSDB写入数据库正确

    小老鼠
  • Java 12:Teeing Collector

    在本文中,我们将介绍一个在Java 12中引入的新集合。这个新功能并未在官方JEP中公布,因为它是一个标题Create Collector的微小更改请求,它合并...

    银河1号
  • 解决emlog静态后post还能访问的问题

    Youngxj
  • 仅仅有单日的确诊总人数,无法触发SAP Analytics Cloud的Smart Discovery功能

    遇到提示信息: Based on your data, we can only generate an overview of Confirmed. Try ...

    Jerry Wang
  • 0737-1.6.1-CDSW分布式计算

    Cloudera Data Science Workbench为从单个交互式会话中启动多个称为workers的引擎实例提供了基本支持。任何R或Python会话均...

    Fayson
  • 20分钟学会DBSCAN聚类算法

    DBSCAN是一种非常著名的基于密度的聚类算法。其英文全称是 Density-Based Spatial Clustering of Applications ...

    lyhue1991
  • 深入浅出——基于密度的聚类方法

    作者 祝烨 编辑 (没脸) “The observation of and the search forsimilarities an...

    机器学习算法工程师
  • EXCEL快速合并相同值

    用户1272546

扫码关注云+社区

领取腾讯云代金券