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

2018-09-26   出处:软件测试资源站  作/译者:马蚁蛋  

前序


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


由于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 测试数据,等等,后续再写。



如何学习?学习没有资料?请关注本公众号,回复「M」试试,获得更多视频资料和入群资格。



欢迎给测试窝投稿或参与内容翻译工作,请邮件至editors@testwo.com。也欢迎大家通过新浪微博(@测试窝)或微信公众号(测试窝)关注我们,并与我们的编辑和其他窝友交流。
182°|1821 人阅读|0 条评论

登录 后发表评论
最新文章