在测试期间使用'Agg'

时间:2016-01-11 00:54:40

标签: unit-testing matplotlib nose

我有一个单元测试,用于测试创建一些图形的函数。我不希望为这些图创建数字,因此我将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是否在目录中运行其他代码?

1 个答案:

答案 0 :(得分:2)

根据@Chris的建议,我将上面的评论添加为答案,以防其他人遇到同样的问题。似乎解决方案是更改.matplotlibrc文件中的默认后端(请参阅matplotlib.org/users/customizing.html)。由于后端在导入时设置为默认值,因此在单元测试目录中存储的.matplotlibrc中指定正确的后端似乎可以解决问题。请注意,系统首先检查本地文件夹,如果未在本地找到,则默认为系统.matplotlibrc。通过这种方式,单元测试可以包含自定义默认文件。