51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1418|回复: 3
打印 上一主题 下一主题

[原创] python mock 脚本

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-6-26 13:17:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
rt,mock的工具有很多,但是我觉得还是不如自己写脚本mock随意,方便。
  1. #! usr/bin/python #coding=utf-8
  2. import BaseHTTPServer  
  3. import urlparse  
  4. import time
  5. from SocketServer import ThreadingMixIn
  6. import threading
  7. import os

  8. class WebRequestHandler(BaseHTTPServer.BaseHTTPRequestHandler):  

  9.     def do_POST(self):

  10.         print 'post message'
  11.         parsed_path = urlparse.urlparse(self.path)
  12.         paramstr = parsed_path.query
  13.         path = parsed_path.path
  14.         print paramstr
  15.         print path
  16.         for param in paramstr.split('&'):
  17.             print param

  18.         length = self.headers.getheader('content-length');
  19.         nbytes = int(length)
  20.         data = self.rfile.read(nbytes)
  21.         cur_thread = threading.currentThread()
  22.         print 'Thread:%s\tdata:%s' % (cur_thread.getName(), data)

  23.         message_parts = [ 'just a test']  
  24.         message = '\r\n'.join(message_parts)  
  25.         self.send_response(200)  
  26.         self.end_headers()  
  27.         self.wfile.write(message)  

  28.     def do_GET(self):

  29.         print 'get message'
  30.         parsed_path = urlparse.urlparse(self.path)
  31.         paramstr = parsed_path.query
  32.         path = parsed_path.path
  33.         print paramstr
  34.         print path
  35.         for param in paramstr.split('&'):
  36.             print param

  37.         if path == self.getShopLevelURL:
  38.             buf = self.getShopLevelResponseBody
  39.         else:
  40.             buf = 'it works'
  41.             self.send_header("Welcome", "Contect")

  42.         self.protocal_version = 'HTTP/1.1'   
  43.         self.send_response(200)  
  44.         self.end_headers()  
  45.         self.wfile.write(buf)

  46.     '''获取店铺评级接口'''
  47.     getShopLevelURL = '/abtest'
  48.     getShopLevelResponseBody = '''
  49.         {
  50.             "status": 1,
  51.             "info": "success",
  52.             "data": {
  53.                 "input": {
  54.                     "phone_number": "15168329206",
  55.                     "cookie": null,
  56.                     "id": "1234567",
  57.                     "session_id": null,
  58.                     "active_id": null
  59.                 },
  60.                 "abt_type": "b",
  61.                 "abt_name": "abt_001"
  62.             }
  63.         }'''

  64. class ThreadingHttpServer(ThreadingMixIn, BaseHTTPServer.HTTPServer):
  65.     pass

  66. if __name__ == '__main__':
  67.     '''server = BaseHTTPServer.HTTPServer(('0.0.0.0',18360), WebRequestHandler) '''
  68.     server = ThreadingHttpServer(('0.0.0.0',18360), WebRequestHandler)
  69.     ip, port = server.server_address
  70.     '''Start a thread with the server -- that thread will then start one '''
  71.     '''more thread for each request'''
  72.     server_thread = threading.Thread(target=server.serve_forever)
  73.     '''Exit the server thread when the main thread terminates'''
  74.     server_thread.setDaemon(True)
  75.     server_thread.start()

  76.     print "Server loop running in thread:", server_thread.getName()
  77.     while True:
  78.        pass
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    无聊
    前天 09:07
  • 签到天数: 11 天

    连续签到: 2 天

    [LV.3]测试连长

    2#
    发表于 2017-6-26 14:54:24 | 只看该作者
    太直接了。。。先说明一下遇到什么痛点,为何市面上的 mock 都不合适,然后自己为了解决这个痛点采用什么方案,最后再贴代码。这样大伙比较容易理解。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    1720761397
  • 签到天数: 1 天

    连续签到: 1 天

    3#
    发表于 2017-6-26 14:54:55 | 只看该作者
    我感觉不错,用什么工具不重要,思路正确就可以,这段代码活很清楚,自己用的惯就好。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-7-12 13:16
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2017-6-26 14:55:18 | 只看该作者
    我建议改用flask实现,代码量少的很
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-21 05:45 , Processed in 0.066818 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表