Python中文
首页
教程
问答
标签
搜索
登录
注册
Python多线程单元测试
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我使用多线程设计(别无选择),但我的大多数代码都位于一个线程中,其中的所有事件都通过<a href="http://docs.python.org/library/queue.html" rel="noreferrer">queue</a>进行管理。以这种方式,我的大多数代码表现得好像是单线程的,我不必担心锁、信号量和其他问题。</p> <p>唉,我已经到了需要联合测试我的代码的地步(请不要因为一开始没有TDDing而大发雷霆),我不知所措——你如何在另一个线程中测试某些东西?</p> <p>例如,假设我有以下课程:</p> <pre><code>class MyClass(): def __init__(self): self.a=0 # register event to self.on_event def on_some_event(self, b): self.a += b def get(self): return self.a </code></pre> <p>我想测试一下:</p> <pre><code>import unittest from queued_thread import ThreadedQueueHandler class TestMyClass(unittest.TestCase): def setUp(self): # create the queued thread and assign the queue to self.queue def test_MyClass(self): mc = MyClass() self.queue.put({'event_name':'some_event', 'val':1}) self.queue.put({'event_name':'some_event', 'val':2}) self.queue.put({'event_name':'some_event', 'val':3}) self.assertEqual(mc.get(),6) if __name__ == '__main__': unittest.main() </code></pre> <p><code>MyClass.get()</code>对于队列线程中的任何内容都可以正常工作,但是测试将在主线程中异步调用它,因此结果可能不正确!</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以查看stdlib测试中的<a href="http://hg.python.org/cpython/file/3dc602b1f4a2/Lib/test/test_threading.py" rel="nofollow">test_threading.py</a>,该测试执行的操作与您尝试执行的操作类似。基本思想是使用互斥和信号量保护线程执行,以便在断言测试条件之前完成执行。</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
尽管Python中的所有内容都是引用,为什么Python导师在没有指针的列表中绘制字符串和整数?
2 回答
尽管python中的表达式为false,但循环仍在运行
2 回答
尽管python代码正确,但从nifi ExecuteScript处理器获取语法错误
2 回答
尽管Python在Neovim中工作得很好,但插件不能识别Neovim中的Python主机
2 回答
尽管python字典包含了大量的条目,但它并没有增长
6 回答
尽管python说模块存在,为什么我会得到这个消息?
8 回答
尽管setuptools和控制盘是最新的,但无法识别singleversionexternallymanaged
9 回答
尽管stdout和stderr重定向,但未捕获错误消息
10 回答
尽管Tensorboard的事件太大,但Tensorboard的步骤太少了
2 回答
尽管tkinter上的变量已更改,但显示未更改
10 回答
尽管try/except使用Python进行单元测试时出现断言错误
7 回答
尽管URL是sam,但仍会抛出“达到最大重定向”
4 回答
尽管url有效,Pandas仍读取url的\u csv错误
7 回答
尽管while中存在时间延迟,但LINUX线程的CPU利用率为100%(1)
5 回答
尽管x0在范围内,Scipy优化仍会引发ValueError
2 回答
尽管xpath正确,但使用selenium单击链接仍不起作用
10 回答
尽管下载了ffmpeg并设置了路径变量python,但没有后端错误
4 回答
尽管下载了i,但找不到型号“fr”
2 回答
尽管下载了plotnine包,但未获取名为“plotnine”的模块时出错
8 回答
尽管为所有行指定了权重,网格(0)仍不起作用
2 回答