Python+requests 实现的自动化接口测试框架。


(雷子) #1

背景

学习一段时间的python3了,自己感觉还算可以吧 虽然代码有些烂,但是感觉还是能够做出来东西的,天天在论坛看东西,学习别人的,决定自己实战一把。决定用python来实现一个简单的接口测试的工具,算是小框架吧,自己感觉有点low。不过还是开源了出来,请大家拍砖。废话不多说上干货。

实现如下

利用python3+requests实现基于http请求json格式的接口。用例管理才用Excel来处理,配置文件通过yaml文件来管理。对requests的库进行简单的封装。然后通过python来组织调用这些文件来处理生成测试报告,测试报告支持html 和excel,这里没有利用unnitest模块。这里的断言才用了自己封装的形式。代码实现分析如下:

def assert_in(asserqiwang,fanhuijson):
    if len(asserqiwang.split('=')) > 1:
        data = asserqiwang.split('&')
        result = dict([(item.split('=')) for item in data])
        value1=([(int(fanhuijson[key])) for key in result.keys()])
        value2=([(int(value)) for value in result.values()])
        if value1==value2:
            return  'pass'
        else:
            return 'fail'
    else:
        raise ('请填写期望值')

这里主要利用的是字符串的分割,字符串转换字典,字典之间取值比较,可能写的比较low。

针对requests的封装,这里只做简单的封装。

class reques():
    def __init__(self):
        self.headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:51.0) Gecko/20100101 Firefox/51.0"}
    def get(self, url):#get消息
        try:
            r = requests.get(url, headers=self.headers)
            r.encoding = 'UTF-8'
            json_response = json.loads(r.text)
            return json_response
        except Exception as e:
            print('get请求出错,出错原因:%s'%e)
            return {}
    def post(self, url, params):#post消息
        data = json.dumps(params)
        try:
            r =requests.post(url,params=params,headers=self.headers)
            json_response = json.loads(r.text)
            return json_response
        except Exception as e:
            print('post请求出错,原因:%s'%e)
    def delfile(self,url,params):#删除的请求
        try:
            del_word=requests.delete(url,params,headers=self.headers)
            json_response=json.loads(del_word.text)
            return json_response
        except Exception as e:
            print('del请求出错,原因:%s' % e)
            return {}

    def putfile(self,url,params):#put请求
        try:
            data=json.dumps(params)
            me=requests.put(url,data)
            json_response=json.loads(me.text)
            return json_response
        except Exception as e:
            print('put请求出错,原因:%s'%e)
            return json_response

这里呢 主要是基于requests的模块,然后对其进行简单的封装,形成一个简单的封装模块。

后面呢,我有对这个进行二次封装,是指更加能够符合后面调用的简便化

class TestApi(object):
	def __init__(self,url,key,connent,fangshi):
		self.url=url
		self.key=key
		self.connent=connent
		self.fangshi=fangshi
	def testapi(self):
		global response
		if self.fangshi=='POST':
			self.parem = {'key': self.key, 'info': self.connent}
			response=reques.post(self.url,self.parem)
		elif self.fangshi=="GET":
			self.parem = {'key': self.key, 'info': self.connent}
			response = reques.post(self.url, self.parem)
		return response
	def getcode(self):
		code=self.testapi()['code']
		return code
	def getJson(self):
		json_data = self.testapi()
		return json_data

到这里里面的主要逻辑就已经完成工了,这里呢 我的测试报告模块,我进行了单独的封装。

开源地址: https://github.com/liwanlei/jiekou-python3


(轱辘国王子@开心) #2

吆,不错,赞一个!感谢作者!


(ztswufe) #3

想请教下,request与webdriver登陆网站的不同,是否可以方便加个微信,谢谢!(weixin:zt6951632)


(雷子) #4

15964636199
准确描述您的问题


(冰河) #5

(冰河) #6

(青柠) #7

不错,给楼主点赞