接口开发请参考:使用Django开发简单接口:文章增删改查python
接口用例是经过Excel来组织的,定义了URL,Request Body等列。执行流程以下:web
优势:json
缺点:api
经过优缺点的对比,能够明显发现这个框架的硬伤其实不少了。因此不管是业界开源的自动化测试框架或企业自研的尚未见过用Excel来组织用例的。值得一提的是个别企业自研的自动化框架很是难用,抑或是把一堆工具简单组合到一块儿。根本没法提升团队的生产力。不过好的产品也不是一蹴而就的,须要一个持续优化的过程。因此上面用Excel组织用例的框架仍是值的玩一玩的,暂且命名为apitest吧。目前比较好的自动化测试框架有unittest,testng,pytest等。框架
采用内置logging模块才记录运行日志,设置日志级别。
log_trace.log:函数
import logging filename = "../report/test_case_run.log" logging.basicConfig(level=logging.INFO, format='%(asctime)s %(levelname)s1 %(filename)s [line:%(lineno)d] %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename=filename, filemode='w')
安装第三方模块requests工具
pip install requests
定义函数send_request,根据传入的方法类型分别去调用request的get,post,delete,put等方法去发送请求。send_request.py:post
import requests from untils. log_trace import * #发送get请求 def get_request(url,data=None,headers=None): res = requests.get(url=url,data=data,headers=headers) return res #发送post请求 def post_request(url,data,headers=None): res = requests.post(url=url,data=data,headers=headers) return res #发送delete请求 def del_request(url,data=None,headers=None): res = requests.delete(url,data=data) return res #发送put请求 def put_request(url,data,headers=None): pass def send_request(method,url,data=None,headers=None): try: logging.info(headers) if headers: if method == "GET": return get_request(url,data,headers=headers) if method == "POST": return post_request(url,data=data,headers=headers) if method == "DELETE": return del_request(url,data=data,headers=headers) #put使用频率低,暂时不写 if method == "PUT": return put_request(url,data=data,headers=headers) else: logging.info("Header is null") except Exception as e: logging.info("send request fail:%s"%e)
在untils_test.py中编写代码测试send_request方法,代码以下:开发工具
#coding:utf-8 from untils.send_request import send_request def test_send_request(): url="http://127.0.0.1:9000/articles/" headers = { "X-Token":"0a6db4e59c7fff2b2b94a297e2e5632e" } res = send_request("GET",url,headers=headers) print(res.json()) if __name__ == "__main__": test_send_request()
运行结果:
/usr/bin/python3.6 /home/stephen/IdeaProjects/apitest/untils/untils_test.py {'status': 'BS.200', 'all_titles': {'amy1': 'alive', 'modifytest': 'alive', 'addTest': 'alive'}, 'msg': 'query articles sucess.'} Process finished with exit code 0