Python中文
首页
教程
问答
标签
搜索
登录
注册
当一个模块没有被导入时,如何编写一个decorator来跳过某些测试?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在使用<a href="http://readthedocs.org/docs/nose/en/latest/testing.html" rel="nofollow noreferrer">nose</a>进行测试。我知道如何跳过测试,但我想知道是否有一个简单的解决方案,在某些模块没有导入的情况下,编写一个decorator来跳过测试。在</p> <p>现在我尝试导入<a href="http://www.voidspace.org.uk/python/mock/index.html" rel="nofollow noreferrer">mock</a>并捕获<code>ImportError</code>,如果它没有安装并设置<code>mock = None</code>。在需要mock的测试开始时,我使用<code>if not mock: raise SkipTest()</code>作为第一行。在</p> <p>那很好用。我只是想知道有没有可能和装修师一起?在</p> <h2>更新</h2> <p>我使用<a href="https://stackoverflow.com/a/9875744/11666">kindall's answer</a>已经有一段时间了,只是为了今天注意到,<em>它仍然不能正常工作(至少在<strong>所有</strong>的情况下都是如此!</em></p> <p>当我使用一个测试函数时,它似乎可以工作,<strong>不是生成器</strong>(不包含<code>yield</code>语句)。每当我在使用<code>yield</code>的测试函数上使用decorator时,无论生成的函数中的<code>assert</code>失败,测试都会通过。在</p> <p>你知道为什么会发生这种情况,以及如何防止这种行为吗?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>装饰工应该是这样的:</p> <pre><code>def needsMock(fn): def wrapped(): if mock is None: return fn() return wrapped </code></pre> <p>当<code>mock</code>为<code>None</code>时,这将使测试通过。您也可以尝试提升<code>SkipTest()</code>,但这可能会干扰装饰器。在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何合并多个PDF文件?
9 回答
如何合并多个xarray数据变量及其坐标?
4 回答
如何合并多个列中具有重复值的行
4 回答
如何合并多个唯一id
10 回答
如何合并多个图纸并使用图纸名称的名称重命名列名?
3 回答
如何合并多个字典并添加同一个键的值?(Python)
9 回答
如何合并多个搜索结果文件(pkl)以将它们全部打印在一起?
3 回答
如何合并多个数据帧
9 回答
如何合并多个数据帧并使用Pandas为假人添加列?
9 回答
如何合并多个数据帧并按时间戳排序
4 回答
如何合并多个数据帧的列表并用另一个lis标记每列
4 回答
如何合并多个数据框中的列
6 回答
如何合并多个文件?
9 回答
如何合并多个查询集?
3 回答
如何合并多个绘图?
6 回答
如何合并多个词典
6 回答
如何合并多个输入数据集(数据帧)?
8 回答
如何合并多条记录中拆分的文本行
5 回答
如何合并多索引列datafram
6 回答
如何合并多级(即多索引)数据帧?
1 回答