网站开发后台服务器功能,哈尔滨工程招投标信息网,婚纱网站开发进度表,北京seo服务行者你好啊#xff01;我是山茶#xff0c;一个持续探索AI 测试的程序员#xff01; 在做接口测试时#xff0c;在python中内置了HTTP库 urllib#xff0c;可以用于发送http请求。基于urllib二次封装的三方库Requests#xff0c;相较于urllib更佳简介易用。所以#xff0c;… 你好啊我是山茶一个持续探索AI 测试的程序员 在做接口测试时在python中内置了HTTP库 urllib可以用于发送http请求。基于urllib二次封装的三方库Requests相较于urllib更佳简介易用。所以在接口自动化测试中通常使用Requests库对接口进行测试
Requests安装
因为Requests是第三方库所以需要对其进行安装通常安装使用pip命令安装即可
# 在终端命令行或python编辑工具pycharm的Terminal中输入以下指令即可
pip install requests 安装完成后在编辑器中引入对应的库import requests Requests常见请求类型 HTTP接口测试涉及到3个方面 请求方法get、post、put、 delete、head ...... 请求体form、json、xml、 binary 响应结果status code、 response body、 json path、 xpath 接口常见的请求方法及类型如下
#【如有问题关注公众号程序员山茶】留言r requests.get(http://127.0.0.1:8080/shancha/test_one) #get请求
r requests.post(http://127.0.0.1:8080/shancha/test_one, data {key:value})#post请求
r requests.put(http://127.0.0.1:8080/shancha/test_one, data {key:value})
r requests.delete(http://127.0.0.1:8080/shancha/test_one)
r requests.head(http://127.0.0.1:8080/shancha/test_one)
r requests.options(http://127.0.0.1:8080/shancha/test_one)#【如有问题关注公众号程序员山茶】留言
# 构造请求目标
import resquests
r requests.get(http://127.0.0.1:8080/shancha/test_one)
print(r.status_code) # 响应结果为 200# 构造请求头
url http://127.0.0.1:8080/shancha/test_one
headers {user-agent: my-app/0.0.1}
r requests.get(url, headersheaders)
print(r.status_code) # 响应结果为 200# 构造请求cookie
url http://127.0.0.1:8080/shancha/test_one
cookies dict(cookies_arechengxuyuanshancha)
r requests.get(url, cookiescookies)
print(r.status_code) # 响应结果为 200
Requests请求体构造
请求体key:value 即键值对的形式存在如query参数、form请求、binary请求上传文件以及json、xml、 json rpc等结构化请求
# form 和 Json 示例如下
#【如有问题关注公众号程序员山茶】留言# form请求
payload {key:valuel,key2:value2}
r requests.post(http://127.0.0.1:8080/shancha/test_one, datapayload)
print(r.status_code) # 响应结果为 200# JSON请求
url http://127.0.0.1:8080/shancha/test_one
payload {some: data}
r requests.post(url, jsonpayload)
print(r.status_code) # 响应结果为 200
Requests响应断言
在做测试时结果判断是功能实现的重要依据之一。结果判断也可以称之为响应断言即对请求动作结果返回的预期 响应的类型有多种 r.url r.status_code r.headers r.cookies r.encoding r.content r.text r.json() 以接口API为例
#【如有问题关注公众号程序员山茶】留言# 结构化响应断言方式
import requests
import jsonr requests.get(https://api.github.com/repos/hiyongz/DjangoDemo)
json_data r.json()
print(json.dumps(json_data, indent4))
# 返回信息结果为
{message: API rate limit exceeded for 50.7.252.58. (But heres the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.),documentation_url: https://docs.github.com/rest/overview/resources-in-the-rest-api#rate-limiting
}
除了常用的Assert断言以外, 还有Hamcrest 断言、xml解析断言、schema断言、JSONPath断言等多种断言方式断言也可以组合使用在测试过程中要根据返回的结果数据选择适合的断言方法
接口测试示例
使用Springboot编写一个接口“/shancha/test_one”且在web端也可以访问 RestController
RequestMapping(/shancha)
public class FirstController {AutowiredFirstService firstService;GetMapping(/test_one)public String showNlefer(){System.out.println(我是山茶公众号程序员山茶。有问题请公众号留言);return {\name\:\山茶\,\公众号\\程序员山茶\};}}
web端访问结果 使用requests测试接口
import requestsdef requestsShanCha():r requests.get(http://127.0.0.1:8080/shancha/test_one)assert r.status_code 200print(r.status_code)print(r.headers)print(r.content)print(返回信息结果r.text)if __name__ __main__:requestsShanCha()
响应结果如下所示与web浏览器响应结果一致 以上本文完如果你觉着有用就点个“赞呗” 作者简介:
程序员山茶一个工作5年并坚持探索测试之路的测试开发工程师。曾混迹于互联网大厂、IOTA行业领航企业、安全行业、大数据行业领航企业欢迎和我一起沟通交流。 欢迎关注我, 和我一起探索AI测试之路终身成长