Python脚本做接口测试,抛弃接口测试工具是否可行?(二)

学习是为了更好的应用,之前做接口测试一直用的postman、fiddler,感觉用工具还是有些局限性,于是想着把学到的python灵活运用到接口测试中,于是就有了以下案例,思考着想用unittest做个简单的接口测试脚本,可以支持单传参和多传参,平时工作中可以随时使用,不但方便,还可以巩固到学习的知识,。

思考点:

1、脚本支持单传参和多传参,利用了for循环和ddt实现

2、接口headers里需传入登录后的token值,利用了unittest每次运行用例时先执行setup初始化好headers

#unittest+ddt实现的接口测试脚本



import requests,json,unittest,xlrd,os
from ddt import ddt,data,unpack
import requests

@ddt
class Test(unittest.TestCase):
    zp_url = 'http://test.com'  # 域名
    params = [{"self_introduce": "我是参数1!"}, {"self_introduce": "我是参数3!"}]  # 接口参数
    @classmethod
    def setUpClass(cls):
        cls.headers = {"Content-Type": "application/json", "Authorization": "token"}  # 请求头
        cls.zp_login_url = '/login'  # 登录接口地址
        cls.zp_login_param = {"captcha": "1234", "client_type": 2, "login_type": 1, "mobile": 18221124103}  # 登录传参
        try:
            res = requests.post(url=cls.zp_url + cls.zp_login_url, headers=cls.headers, json=cls.zp_login_param)
            cls.headers['Authorization']=res.json()['data']['token']
        except Exception:
            print('参数错误')
        cls.url = '/update_user_info'  # 接口地址
        cls.method='POST'
    @classmethod
    def tearDownClass(cls):
        pass
    def sendGet(self,api_url,param):
        try:
            res=requests.get(url=api_url,headers=self.headers).json()
            print(res)
        except Exception:
            print('参数错误')
    def sendPost(self,api_url,param):
        try:
            res = requests.post(url=api_url, headers=self.headers, json=param).json()
            print(res)
        except Exception:
            print('参数错误')
    @data(*params)
    def test(self,params):
        if self.method=='GET' or self.method=='get' or self.method=='Get':
            self.sendGet(self.zp_url+self.url,params)
        elif self.method== 'POST' or self.method=='post' or self.method=='Post':
            self.sendPost(self.zp_url+self.url,params)
        else:
            print('请传正确请求方式GET或POST')
if __name__== '__main__':
    unittest.main()


"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
{'code': 0, 'data': {}, 'msg': '成功'}
..
----------------------------------------------------------------------
{'code': 0, 'data': {}, 'msg': '成功'}
Ran 2 tests in 0.462s

OK

Process finished with exit code 0
#unittest实现的接口测试脚本


import requests,json,unittest,xlrd,os
from ddt import ddt,data,unpack
import requests,json
@ddt
class Test(unittest.TestCase):
    zp_url = 'http://test.com'  # 域名
    @classmethod
    def setUpClass(cls):
        cls.headers = {"Content-Type": "application/json", "Authorization": "token"}  # 请求头
        cls.zp_login_url = '/login'  # 登录接口地址
        cls.zp_login_param = {"captcha": "1234", "client_type": 2, "login_type": 1, "mobile": 18221124103}  # 熟仁直聘登录传参
        try:
            res = requests.post(url=cls.zp_url + cls.zp_login_url, headers=cls.headers, json=cls.zp_login_param)
            cls.headers['Authorization']=res.json()['data']['token']
        except Exception:
            print('参数错误')
        cls.url = '/update_user_info'  # 接口地址
        cls.params = [{"self_introduce": "我是参数1!"}, {"self_introduce": "我是参数3!"}]  # 接口参数
        cls.method='POST'
    @classmethod
    def tearDownClass(cls):
        pass
    def sendGet(self,api_url,param):
        try:
            res=requests.get(url=api_url,headers=self.headers).json()
            print(res)
        except Exception:
            print('参数错误')
    def sendPost(self,api_url,param):
        try:
            res = requests.post(url=api_url, headers=self.headers, json=param).json()
            print(res)
        except Exception:
            print('参数错误')
    def test(self):
        for param in self.params:
            if self.method=='GET' or self.method=='get' or self.method=='Get':
                self.sendGet(self.zp_url+self.url,param)
            elif self.method== 'POST' or self.method=='post' or self.method=='Post':
                self.sendPost(self.zp_url+self.url,param)
            else:
                print('请传正确请求方式GET或POST')
if __name__== '__main__':
    unittest.main()


"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/Test/test.py
{'data': {}, 'code': 0, 'msg': '成功'}
.
----------------------------------------------------------------------
Ran 1 test in 0.515s

OK
{'data': {}, 'code': 0, 'msg': '成功'}

Process finished with exit code 0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大力测试进阶之路

打赏博主喝瓶水吧!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值