栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于Flask框架实现Mock Server

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于Flask框架实现Mock Server

目录
  • 1.目录结构
  • 2.UnitTest Mock Server
  • 3.基于Flask框架实现Mock Server


1.目录结构

2.UnitTest Mock Server
# A开发 注册功能

def test_demo1():
    pass

# B开发 登录

def test_login():
    pass

# C开发 首页 用到注册和登录的功能数据
# 调用 接口 C开发调用ab开发的功能写完了模块 静静等着 ab开发 测试
# 调试
from class41.demo1 import test_demo1
from class41.demo2 import test_login


def fun():
    # res1和res2都有值 返回1
    res1 = test_demo1()
    res2 = test_login()
    if res1 and res2:
        return 1
    else:
        return 2

import unittest
from unittest import mock

from class41 import demo1, demo2, demo3


class TestCase(unittest.TestCase):
    # 注册的功能 有值给我
    # 登录的功能 有值给我
    def testcase01(self):
        demo3.test_demo1 = mock.Mock(return_value=1)
        demo3.test_login = mock.Mock(return_value=0)
        self.assertEqual(2,demo3.fun())

if __name__ == '__main__':
    unittest.main()

# mock 创建真实的数据 a开发 b开发的功能也没动 不能动他们的代码
# 数据 用mock去创建数据 返回数据 真实的数据 看你写的代码 能不能去使用这些数据
# 开发 a 注册
# b 登录
# c 首页 登录 注册 没注册
# unittest的mock 构造了返回值 给到 a注册 给到了b开发登录的值
# 断言
3.基于Flask框架实现Mock Server





登录界面






显示所有界面

{% for project in projects %} 项目名称: {{project}} {% endfor %}
from time import sleep

from selenium import webdriver


def test_baidu():
    driver = webdriver.Chrome()
    driver.get('http://www.baidu.com')
    sleep(3)
    driver.quit()

from time import sleep

from selenium import webdriver


def test_jd():
    driver = webdriver.Chrome()
    driver.get('http://www.jd.com')
    sleep(3)
    driver.quit()

# flask
# 1.导包 from flask import Flask
# 2.实例化 Flask
# 3.创建路由
'''
@app.route('/home')
def first_flask():
    return 'hello flask'
'''
# @app.route(页面路径,请求方式)
# 函数体
# 运行app.run() 实时更新代码 debug = True app.run(debug=True)
from pathlib import Path

import pytest
from flask import Flask, request, jsonify, render_template

app = Flask(__name__)
# 没写请求方式 默认get访问
# @app.route('/api/login')
# def first_flask():
#     return 'hello flask'

# 改成post请求
# @app.route('/api/login',methods=['post'])
# def first_flask():
#     return 'hello flask'

# @app.route('/api/login',methods=['post','get'])
# def first_flask():
#     return 'hello flask'


# 里面 函数传参进来 接受 与requests不同
# @app.route('/api/login',methods=['post','get'])
# def login():
#     print(request.get_json())
#     print(request.get_data())
# 传参

# 题目:
#传参数 登录 传过来的数据 是admin和123456 认为登录成功 否则认为登录失败
# 1.先要获得postman里面传输了什么数据
# 2.拿到对应的数据 判断
# 3.如果传过来的值是admin和123456 登录成功 否则登录失败
# 4.判断传过来的值是admin和123456
# @app.route('/api/login',methods=['post','get'])
# def login():
#     # print(request.get_json())
#     data = request.get_json()
#     username = data['username']
#     password = data['password']
#     if (2 < len(username) <18) and (2
#     请输入密码: 
#     '''

# 直接返回一个html页面
# @app.route('/api/login',methods=['post','get'])
# def home():
#     return render_template('index2.html')

# 页面中显示数据 html页面中要拿到传过来的数据 html循环数据 projects
# @app.route('/api/login',methods=['post','get'])
# def home():
#     projects = ['project1','project2']
#     return render_template('index3.html',projects = projects)

# 练习 扩展
# 通过在页面上点击链接 能自动触发到我的项目 触发百度启动 文件夹的名称
# app.root_path 根目录 class41
# 这个函数我想要实现的事情是拿到workspace文件中的目录文件和文件名称
@app.route('/api/login',methods=['post','get'])
def home():
    workspace = Path(app.root_path)/'workspace'
    projects = [projects.name for projects in workspace.iterdir()]
    return render_template('index3.html', projects=projects)


# 拿到文件名称之后 点击文件 点击request就运行百度 点击selenium就运行京东
# 在页面上点击request 跳转到build这个路由里面就用pytest触发百度执行 京东执行
@app.route('/build',methods=['post','get'])
def build():
    project_name = request.args.get('project')
    pytest.main([f'workspace/{project_name}'])
    return '构建成功'

# 运行
if __name__ == '__main__':
    # 启动服务 实时更新
    # app.run('127.0.0.1','5555')
    app.run(debug = True)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1033616.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号