小编vfx*_*Ger的帖子

导入时调用模拟函数

我有一个需要测试的模块,该模块在导入时调用函数,但由于各种原因我无法调用该函数。所以我嘲笑这个函数,但甚至嘲笑它调用导入。

例如,我正在测试 mod1.py ,如下所示:

import os

def bar():
    return 'foo'

def dont_call():
    os.listdir("C:\\tmp")

dont_call()
Run Code Online (Sandbox Code Playgroud)

我的测试看起来像这样:

import mock

@mock.patch("mod1.dont_call")
def test_mod1(mock_dont_call):
    import mod1
    assert mod1.bar()=='foo'

if __name__=="__main__":
    test_mod1()
Run Code Online (Sandbox Code Playgroud)

问题是 os.listdir 被调用。

我无法更改 mod1 那么我该怎么办?

我使用的是python2.7。

为了将其放在上下文中,我正在测试一个在导入时打开数据库连接的模块,我不同意该模块,但我可以看到其背后的原因。不幸的是,我无法在我的 QA 机器上访问该数据库。

python unit-testing mocking

5
推荐指数
1
解决办法
1876
查看次数

在matplotlib.pyplot中绘图时如何显示日期?

我有这个python代码用于显示一些数字随着时间的推移:

import matplotlib.pyplot as plt
import datetime
import numpy as np

x = np.array([datetime.datetime(2013, 9, i).strftime("%Y-%m-%d") for i in range(1,5)], 
            dtype='datetime64')
y = np.array([1,-1,7,-3])
plt.plot(x,y)
plt.axhline(linewidth=4, color='r')
plt.show()
Run Code Online (Sandbox Code Playgroud)

生成的图形在x轴上的数字为0.0到3.0:

在此输入图像描述

显示日期而不是这些数字的最简单方法是什么?优选地,格式为%b%d.

python numpy matplotlib

4
推荐指数
1
解决办法
4881
查看次数

标签 统计

python ×2

matplotlib ×1

mocking ×1

numpy ×1

unit-testing ×1