前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python脚本做接口测试如此简单之抛弃工具(二)

Python脚本做接口测试如此简单之抛弃工具(二)

作者头像
王大力测试进阶之路
发布2019-10-25 17:29:47
1K0
发布2019-10-25 17:29:47
举报
文章被收录于专栏:橙子探索测试橙子探索测试

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

思考点:

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

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

代码语言:javascript
复制
#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
代码语言:javascript
复制
#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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档