python django简单demo 搭建最简单的python服务,提供测试支持 接口mock

365 阅读2分钟

最近需要对访问第三方服务的接口做一些mock,我们访问第三方的接口是在配置文件进行配置的,很方便替换,所以直接就打算起一个简单的django服务

交流学习加v: image.png

(非机构,行业变迁,同类好友多一个,多一些可能性,想要机构可以推荐...)

    请路过大佬不经意的提点!谢谢

    思路:

        1. 找一个开源的django框架(直接其它的都不需研究了,因为测试比较少搞这些。另外其实可以找最简单的demo,我只是顺手)

        2. 添加接口,并做处理

        3. 接口参数写入数据库中, 可方便定义返回内容

(注:我使用的是开源项目automagic 作者ray)

(注意这边演示的前提就是找了一个对应的基本可用的demo项目哦,之后只需要做少量编辑)

添加接口的过程:

  1. 找到需要启动的manage.py文件,找到配置文件路径

image.png 2.找到主url的路径

image.png 3.找到想要添加接口的子节点

image.png 4. 在对应的urls.py文件中,添加你需要的接口 

image.png 5.接下来,来定义这个接口的返回,在对应的views.py文件中,定义处理该接口的方法咯

image.png 6. 最后附上本次要mock的接口公共方法(“项目的源码”请添加wei v:ct-xiaozhou,行业变迁,愿多个可能性)

image.png

说明:没有使用django的数据处理方式,直接使用mysql处理方法了

def commonDeel_99shou(request, apiname):

    mysqla = TestMysqlDB()

    apiinfo = mysqla.getOneData(f"SELECT returnStatus FROM test_work.mock_api_info where apiname='{apiname}'")

    apireturnMsg = mysqla.getOneData(

        f"SELECT returnMsg FROM test_work.mock_api_return where apiname='{apiname}' and apiStatus='{apiinfo[0]}'")

    mysqla.close()

    tempstr = apireturnMsg[0]

    tempstr = reStrCommonDeel(tempstr)

    print(type(tempstr))

    if request.method == 'POST':

        # result = {"result": 0, "msg": "执行成功"}

        # return HttpResponse(json.dumps(result))

        try:

            json.loads(tempstr)

        except Exception as e:

            return JsonResponse({"result": -2, "msg": "参数格式错误,检查是否json格式"})

        return HttpResponse(tempstr)

    else:

        return JsonResponse({"result": -1, "msg": "请求方式不对"})

 附上mysql处理(数据表是自己搭建的数据库,使用工具界面添加的,非常简单。。。(有sql啊,但是本人懒啊。。)):

class TestMysqlDB:

    test_host = '10.255.00.00'

    test_port = 3306

    test_user = 'root'

    test_password = '123456'

    test_db = 'test_work'

    def init(self, db=None):

        self.conn = pymysql.connect(host=self.test_host,

                                    port=self.test_port,

                                    user=self.test_user,

                                    password=self.test_password,

                                    db=self.test_db,

                                    charset='utf8'

                                    )

        # 使用cursor()方法获取操作游标

        self.cursor = self.conn.cursor()

    def getOneData(self, sqlstr):

        # 返回一条数据

        self.cursor.execute(sqlstr)

        return self.cursor.fetchone()

    def close(self):

        self.cursor.close()

        self.conn.close()