pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

Python mock Patch os.environ 和返回值

Python mock Patch os.environ and return value(Python mock Patch os.environ 和返回值)
本文介紹了Python mock Patch os.environ 和返回值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

使用模擬單元測試 conn():

Unit testing conn() using mock:

app.py

import mysql.connector
import os, urlparse


def conn():
    if "DATABASE_URL" in os.environ:
        url = urlparse(os.environ["DATABASE_URL"])
        g.db = mysql.connector.connect(
            user=url.username,
            password=url.password,
            host=url.hostname,
            database=url.path[1:],
        )
    else:
        return "Error"

test.py

def test_conn(self):
    with patch(app.mysql.connector) as mock_mysql:
        with patch(app.os.environ) as mock_environ:
            con()
            mock_mysql.connect.assert_callled_with("credentials")

錯誤:斷言 mock_mysql.connect.assert_called_with 未被調用.

我認為這是因為Database_url"不在我修補的 os.environ 中,并且因為沒有對 mysql_mock.connect 進行測試調用.

which i believe it is because 'Database_url' is not in my patched os.environ and because of that test call is not made to mysql_mock.connect.

問題:

1 我需要進行哪些更改才能使此測試代碼正常工作?

1 what changes i need to make to make this test code work?

2.我也必須修補'urlparse'嗎?

2.Do i also have to patch 'urlparse'?

推薦答案

你可以試試unittest.mock.patch.dict 解決方案.只需使用 dummy 參數(shù)調用 conn:

You can try unittest.mock.patch.dict solution. Just call conn with a dummy argument:

import mysql.connector
import os, urlparse


@mock.patch.dict(os.environ, {"DATABASE_URL": "mytemp"}, clear=True)  # why need clear=True explained here https://stackoverflow.com/a/67477901/248616
def conn(mock_A):
    print os.environ["mytemp"]
    if "DATABASE_URL" in os.environ:
        url = urlparse(os.environ["DATABASE_URL"])
        g.db = mysql.connector.connect(
            user=url.username,
            password=url.password,
            host=url.hostname,
            database=url.path[1:],
        )
    else:
        return "Error"

或者,如果您不想修改原始功能,請嘗試以下解決方案:

Or if you don't want to modify your original function try this solution:

def func():
    print os.environ["mytemp"]


def test_func():
    k = mock.patch.dict(os.environ, {"mytemp": "mytemp"})
    k.start()
    func()
    k.stop()


test_func()

這篇關于Python mock Patch os.environ 和返回值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!

【網(wǎng)站聲明】本站部分內容來源于互聯(lián)網(wǎng),旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯(lián)系我們刪除處理,感謝您的支持!

相關文檔推薦

How should I verify a log message when testing Python code under nose?(在鼻子下測試 Python 代碼時,我應該如何驗證日志消息?)
Patch __call__ of a function(修補函數(shù)的 __call__)
How to call self in a mock method of an object in Python?(如何在 Python 中對象的模擬方法中調用 self?)
Mocking only a single method on an object(僅模擬對象上的單個方法)
Mocking a subprocess call in Python(在 Python 中模擬子進程調用)
Checking call order across multiple mocks(檢查多個模擬的調用順序)
主站蜘蛛池模板: 深圳宣传片制作_产品视频制作_深圳3D动画制作公司_深圳短视频拍摄-深圳市西典映画传媒有限公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 厦门网站建设_厦门网站设计_小程序开发_网站制作公司【麦格科技】 | 隧道风机_DWEX边墙风机_SDS射流风机-绍兴市上虞科瑞风机有限公司 | 北京西风东韵品牌与包装设计公司,创造视觉销售力! | 六维力传感器_三维力传感器_二维力传感器-南京神源生智能科技有限公司 | 品牌设计_VI设计_电影海报设计_包装设计_LOGO设计-Bacross新越品牌顾问 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 天津中都白癜风医院_天津白癜风医院_天津治疗白癜风 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 无锡不干胶标签,卷筒标签,无锡瑞彩包装材料有限公司 | 手持式线材张力计-套帽式风量罩-深圳市欧亚精密仪器有限公司 | 医用空气消毒机-医用管路消毒机-工作服消毒柜-成都三康王 | X光检测仪_食品金属异物检测机_X射线检测设备_微现检测 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | CXB船用变压器-JCZ系列制动器-HH101船用铜质开关-上海永上船舶电器厂 | 扫地车厂家-山西洗地机-太原电动扫地车「大同朔州吕梁晋中忻州长治晋城洗地机」山西锦力环保科技有限公司 | 上海办公室设计_办公楼,写字楼装修_办公室装修公司-匠御设计 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 斗式提升机,斗式提升机厂家-淄博宏建机械有限公司 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 陕西华春网络科技股份有限公司| 粒米特测控技术(上海)有限公司-测功机_减速机测试台_电机测试台 | 304不锈钢无缝管_不锈钢管厂家 - 隆达钢业集团有限公司 | 影视模板素材_原创专业影视实拍视频素材-8k像素素材网 | 苏州西装定制-西服定制厂家-职业装定制厂家-尺品服饰西装定做公司 | 书信之家_书信标准模板范文大全 最新范文网_实用的精品范文美文网 | 丽陂特官网_手机信号屏蔽器_Wifi信号干扰器厂家_学校考场工厂会议室屏蔽仪 | 布袋除尘器|除尘器设备|除尘布袋|除尘设备_诺和环保设备 | 油漆辅料厂家_阴阳脚线_艺术漆厂家_内外墙涂料施工_乳胶漆专用防霉腻子粉_轻质粉刷石膏-魔法涂涂 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 湿地保护| 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 高压负荷开关-苏州雷尔沃电器有限公司 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 照相馆预约系统,微信公众号摄影门店系统,影楼管理软件-盟百网络 | 通风天窗,通风气楼,屋顶通风天窗,屋顶通风天窗公司 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 临朐空调移机_空调维修「空调回收」临朐二手空调 | 节流截止放空阀-不锈钢阀门-气动|电动截止阀-鸿华阀门有限公司 |