多线程中的 Python 单元测试
我想对几个主要执行文件输入和输出的类的功能进行单元测试。此外,我想在多个核心上执行此操作(--jobs=4)。
问题是,由类创建的文件通常具有相同的名称,并且它们在多个线程中混合在一起。我目前所做的是在单独的目录中运行每个单元测试,如下所示:
def test(self):
if os.path.exists("UniqueDir"):
os.system("rm -rf UniqueDir")
os.mkdir("UniqueDir")
os.chdir("UniqueDir")
#Do the actual testing
os.chdir("..")
os.rmdir("UniqueDir")
缺点非常明显:
- 每个测试都必须接收唯一的目录名
- 每个测试都有源代码的开销,这真的一点也不令人愉快
我可以使用什么方法来 1. 将我的测试彼此分开,但 2. 以一种更优雅的方式进行?
如有任何帮助、建议等,我们将不胜感激!
切里奥·沃尔坦
I would like to unit-test the functionality of a few classes that mainly do file in- and output. Furthermore I would like to do that on multiple cores (--jobs=4).
The problem is, that the files that are created by the classes often have the same name and they get mixed up in multiple threads. What I do currently is that I run each unit-test in a separate directory like so:
def test(self):
if os.path.exists("UniqueDir"):
os.system("rm -rf UniqueDir")
os.mkdir("UniqueDir")
os.chdir("UniqueDir")
#Do the actual testing
os.chdir("..")
os.rmdir("UniqueDir")
The downsides are very obvious:
- Each test must receive a unique directory name
- Each test has this overhead of source which really is not pleasant to look at at all
What approach could I use to 1. separate my tests from one another but 2. do it in a more elegant way?
Any help, suggestion etc. is appreciated!
Cherio Woltan
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议使用unittest模块并构建如下类:
此外,您可以添加多处理来创建4个线程。
编辑:删除了 os.mkdir 因为 mkdtemp 创建了一个临时目录,所以它是假的。谢谢塞巴斯蒂安。
I would suggest to use the unittest module and build the classes like this:
Additionally you could add multiprocessing to create 4 threads.
Edit: removed the os.mkdir because mkdtemp creates a temp directory so it's bogus. Thx Sebastian.