Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 请求后单元测试中的模拟烧瓶.g_Python_Python 3.x_Flask_Python Unittest - Fatal编程技术网

Python 请求后单元测试中的模拟烧瓶.g

Python 请求后单元测试中的模拟烧瓶.g,python,python-3.x,flask,python-unittest,Python,Python 3.x,Flask,Python Unittest,这里是test.py,在这里使用mock\u服务我模拟游标和db,但是每次我得到“function”对象时都没有属性“cursor”。如何正确模拟flask.g对象。我提到了这个 这是我的Service.py文件 from flask import g @service.before_request def before_request(): g.db = configure_db() g.cursor = g.db.cursor() @service.route('/in

这里是
test.py
,在这里使用
mock\u服务
我模拟游标和db,但是每次我得到
“function”对象时都没有属性“cursor”
。如何正确模拟flask.g对象。我提到了这个

这是我的
Service.py
文件

from flask import g 

@service.before_request
def before_request():
    g.db = configure_db()
    g.cursor = g.db.cursor()

@service.route('/insertvalue', methods=['POST'])
def in_request():
    ....
    try:
        g.cursor.execute(sql, main_values)
        g.db.commit()
        return make_response("Created", 201)
任何帮助,谢谢。
谢谢

我想说的是,您在这个用例中没有正确地使用g。你应该看看烧瓶:。然后,看看他们在这里是怎么做的:他们创建了一个用于测试的测试数据库。那么他们就不需要模拟光标了。如果你真的需要模仿光标,那就保持他们的样子。因为您必须像导入db模块一样导入db模块,所以您可以很容易地从该模块模拟函数,比g更容易。这很有帮助!!谢谢
from flask import g 

@service.before_request
def before_request():
    g.db = configure_db()
    g.cursor = g.db.cursor()

@service.route('/insertvalue', methods=['POST'])
def in_request():
    ....
    try:
        g.cursor.execute(sql, main_values)
        g.db.commit()
        return make_response("Created", 201)