我有一个单元测试,用于测试创建一些图形的函数。我不希望为这些图创建数字,因此我将matlplotlib.use('Agg')
添加到单元测试和功能。
这些是单元测试和函数的 First 两行:
import matplotlib as mpl
mpl.use('Agg')
......我仍然收到这条消息:
This call to matplotlib.use() has no effect
because the backend has already been chosen;
matplotlib.use() must be called *before* pylab, matplotlib.pyplot,
or matplotlib.backends is imported for the first time.
......当我跑步时:
nosetests my_unit_test.py
在运行单元测试之前,nosetests是否在目录中运行其他代码?
答案 0 :(得分:2)
根据@Chris的建议,我将上面的评论添加为答案,以防其他人遇到同样的问题。似乎解决方案是更改.matplotlibrc
文件中的默认后端(请参阅matplotlib.org/users/customizing.html)。由于后端在导入时设置为默认值,因此在单元测试目录中存储的.matplotlibrc
中指定正确的后端似乎可以解决问题。请注意,系统首先检查本地文件夹,如果未在本地找到,则默认为系统.matplotlibrc
。通过这种方式,单元测试可以包含自定义默认文件。