Vagrant在ssh -c下无法进行鼻子测试

时间:2015-06-11 22:29:01

标签: python vagrant nose nosetests

我想写一个命令ssh into vagrant,更改当前的工作目录,然后运行nosetests。

我在流浪汉的文档中发现可以使用vagrant ssh -c COMMAND

完成此操作

http://docs.vagrantup.com/v2/cli/ssh.html

问题是如果我通过-c运行nose或者在SSH之后手动运行,我会得到不同的结果。

命令:

vagrant ssh -c 'pwd && cd core && pwd && nosetests -x --failed' web

输出:

/web
/web/core

----------------------------------------------------------------------
Ran 0 tests in 4.784s

OK
Connection to 127.0.0.1 closed.

命令:

vagrant ssh web

/web$ pwd && cd core && pwd && nosetests -x --failed

输出

/web                                                     
/web/core                                                
.........................................................
.........................................................
.........................................................
.........................................................
<snip>
...............................                          
---------------------------------------------------------

Ran 1399 tests in 180.325s

我不明白为什么会有所作为。

2 个答案:

答案 0 :(得分:1)

第一个ssh会话不是终端会话。如果您尝试使用ssh -t代替vagrant ssh -c,则输出可能会相同。如下所示的命令应该提供与本地获得的输出相当的输出:

ssh -t <username>@<ip-of-vagrant-machine> -p <vagrant-vm-ssh-port> 'pwd && cd core && pwd && nosetests -x --failed'

流浪汉机器上的用户名和密码的默认值都是“vagrant”,在使用vagrant up设置流浪汉机器时会显示ssh-port和ssh into的IP。如果您更喜欢公钥ssh login vagrant也可以指向ssh公钥的位置。

根据您在vm上运行鼻子的位置,您必须调整上面的cd命令,似乎vagrant ssh包装器会自动将您移动到VM上的/web

如果您只是担心测试的结果因视觉差异会有所不同:不,他们不应该,原因只是在非交互式终端上鼻子以不同的方式显示结果。 / p>

答案 1 :(得分:0)

我可以通过运行来解决此问题:

vagrant ssh -c 'cd core && nosetests -x --failed --exe' web

我不确定为什么这会对我的盒子造成影响。