
将requests进行自定义封装的代码片段如下:
# myrequests_util.py
import requests
class MyRequestsUtil:
def __init__(self):
# 编写自己需要的项目逻辑
pass
def myrequestsutil(self,MyUrl,MyMethod,MyHeaders=None,MyParam=None,MyContentTypr=None):
try:
if MyMethod == 'get':
# requests的请求结果进行返回时,一般用json格式查看,故.json()
myresponse = requests.get(url=MyUrl, headers=MyHeaders, params=MyParam).json()
elif MyMethod == 'post':
# post请求的两种不同参数方式
if MyContentType == 'application/json':
myresponse = requests.post(url=MyUrl, headers=MyHeaders, json=MyParam).json()
else:
myresponse = requests.post(url=MyUrl, headers=MyHeaders, data=MyParam).json()
elif MyMethod == '...': # 根据实际项目进行补充
pass
except Exception as e:
print("http请求失败,原因:{}".format(e))
if __name__ == '__main__':
# 1.get请求方式试验
myurl = "https://api.baidu.com/all_category"
r = MyRequestsUtil()
result = r.myrequestsutil(myurl, 'get')
print(result)
# 2.post请求方式试验
myurl = "https://api.baidu.com/user_login"
myparam = {"phone": "13712345678", "pwd": "1234567890"}
mycontenttype = "application/x-www-form-urlencoded"
r = MyRequestsUtil()
result = r.myrequestsutil(myurl, 'post', MyParam=myparam, MyContentType=mycontenttype)
print(result)
代码注释:
1.虽然是封装,但其内部还是调用的原requests()方法,可是封装的意义有很多
2.封装可以实现自定义,在实际项目中有针对项目本身的逻辑需要自我实现,而不仅仅只有requests
3.一次封装多次使用,每次新加代码时可以拿来封装代码类直接使用,而不需要重复编写requests的网络请求部分代码
4.(有待想起来补充,或提问提醒)
二、requests自定义封装类的使用自定义封装类完成后就可以拿来使用了,可以验证是否符合自己的实际项目,以便提升测试工作效率。
调用封装类代码片段如下:
# mycase1.py
# 第一个功能模块上有哪些接口,针对每个接口都编写方法,进行测试
# 导入unittest的原因是:
# 1.可以使用unittest的一些规则,包括继承unittest.TestCase
# 2.定义api方法时,使用test开头的方式
# 3.使用unittest.main()直接加载执行所有的方法
# 导入util的原因是:
# 1.使用自己封装的requests方法,使之符合自己的规则从而方便测试工作
import unittest
from util.myrequests_util import MyRequestsUtil
# 全局变量
T_host = "https://api.baidu.com"
class FirstTestCase(unittest.TestCase):
def testCategoryList(self):
request_util = MyRequestsUtil()
homepage_url = T_host + "/pub/v1/web/all_category"
response = request_util.myrequestsutil(homepage_url, 'get')
# 对结果进行断言
self.assertEqual(response['code'], 0, "接口请求的返回码错误")
self.assertTrue(len(response['data']) > 0, "接口请求的返回无数据")
def test2(self):
# 编写自己的用例2
pass
def test3(self):
# 编写自己的用例3
pass
if __name__ == '__main__':
unittest.main(verbosity=2)
代码注释:
1.应用自定义封装类时,顺便应用了之前的内容unittest
2.利用封装实现了适应自己项目的测试流程
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)