小编Mik*_*yer的帖子

一个测试类中同一服务的 @MockBean 和 @Autowired

是否有可能以某种方式拥有相同的测试类@MockBean@Autowired相同的服务?

换句话说,我只想@MockBean为一项测试提供服务,而对于同一类别的其他测试,我需要它作为@Autowired.

java junit spring mockito spring-boot-test

11
推荐指数
2
解决办法
1万
查看次数

Python如何在打开后删除文件时读取文件

我很难理解Python在被open编辑后删除文件时如何读取文件的概念.这是代码:

>>> import os
>>> os.system('cat foo.txt')
Hello world!
0
>>> f
<_io.TextIOWrapper name='foo.txt' mode='r' encoding='UTF-8'>
>>> os.system('rm -f foo.txt')
0
>>> os.system('cat foo.txt')
cat: foo.txt: No such file or directory
256
>>> f.read()
'Hello world!\n'
>>>
Run Code Online (Sandbox Code Playgroud)

文本和二进制模式给出相同的结果.

我也尝试过这个大小超过1Gb的大文件,删除后也会读取它们.open即使对于非常大的文件,操作也几乎瞬间发生.

如果打开的文件不再存在,Python从哪里获取数据?

我跑了这个测试

  • python 3.4.3 / 3.5.2
  • ubuntu 14.04 / 16.04

python linux file readfile

6
推荐指数
1
解决办法
150
查看次数

python中subprocess.Popen preexec_fn和start_new_session之间的区别

是什么启动一个新的进程与这两个选项之间的区别subprocess.Popenpython3.2+Linux

proc = subprocess.Popen(args, ..., preexec_fn=os.setsid)   # 1
proc = subprocess.Popen(args, ..., start_new_session=True) # 2
Run Code Online (Sandbox Code Playgroud)

我需要这个,因为我需要设置进程组ID,以便有可能立即杀死该进程及其所有子进程。然后,如果流程运行时间超过特定阈值,则使用此方法:

try:
    out, err = proc.communicate(timeout=time_max)
except subprocess.TimeoutExpired:
    os.killpg(os.getpgid(proc.pid), signal.SIGTERM) 
Run Code Online (Sandbox Code Playgroud)

我使用两个选项(#1#2)测试了我的代码,它们对我来说似乎都可以正常工作。

但是我想知道这里最好的选择是什么-一个preexec_fn或一个start_new_session

python subprocess popen kill-process setsid

5
推荐指数
1
解决办法
4068
查看次数