第一次运行alpine docker容器并尝试openssh安装时,会发生以下情况:
ole@T:~$ docker run -it --rm alpine /bin/ash
/ # apk add openssh
WARNING: Ignoring APKINDEX.d3812b7e.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.bb2c5760.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
openssh (missing):
required by: world[openssh]
Run Code Online (Sandbox Code Playgroud)
应该如何安装openssh?
在机器人框架中,我有一个这样的测试套件:
test-suite/
??? Common.robot
??? TestCaseA.robot
??? TestCaseB.robot
Run Code Online (Sandbox Code Playgroud)
该文件Common.robot定义了两个TestCaseA.robot和将使用的一些关键字TestCaseB.robot.在其他语言Common.robot中称为库,但尝试像这样导入它
*** Settings ***
Library Commons
Run Code Online (Sandbox Code Playgroud)
或者那样
*** Settings ***
Library Commons.robot
Run Code Online (Sandbox Code Playgroud)
导致错误.
[ ERROR ] Error in file '[...]/TestCaseA.robot': Importing test library 'Commons' failed: ImportError: No module named Commons
Run Code Online (Sandbox Code Playgroud)
该关键字Library似乎仅适用于低级别测试库.我相信还有另一种方式.用户定义的库如何包含在机器人框架中?
我有一个具有以下结构的Python项目(为简单起见,省略了相关的源文件):
myproject/
mysubmodule/
setup.py
setup.py
Run Code Online (Sandbox Code Playgroud)
该文件myproject/setup.py用于distutils.core.setup安装模块myproject和相关源.但是,myproject需要mysubmodule安装(这是一个git子模块).所以我现在正在做的是:
myproject/$ cd mysubmodule
myproject/mysubmodule/$ python setup.py install
myproject/mysubmodule/$ cd ..
myproject/$ python setup.py install
Run Code Online (Sandbox Code Playgroud)
这对客户来说太单调乏味,特别是如果将来通过更多子模块扩展该项目.
有没有办法mysubmodule在调用时自动安装myproject/setup.py?
我在Windows上运行Python并行处理.这是我的代码:
from joblib import Parallel, delayed
def f(x):
return sqrt(x)
if __name__ == '__main__':
a = Parallel(n_jobs=2)(delayed(f)(i) for i in range(10))
Run Code Online (Sandbox Code Playgroud)
这是错误消息:
Process PoolWorker-2:
Process PoolWorker-1:
Traceback (most recent call last):
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\process.py", line 258, in _bootstrap
self.run()
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\App\appdata\canopy-1.5.4.3105.win-x86_64\lib\multiprocessing\pool.py", line 102, in worker
task = get()
File "C:\Users\yoyo__000.BIGBLACK\AppData\Local\Enthought\Canopy\User\lib\site-packages\joblib\pool.py", line 363, in get
return recv()
AttributeError: 'module' object has no attribute 'f'
Run Code Online (Sandbox Code Playgroud) 我有一个程序由systemd运行,其服务文件如下:
[Unit]
Description=...
[Service]
Type=notify
ExecStart=/usr/sbin/myprogram
WatchdogSec=1
KillMode=process
KillSignal=SIGTERM
Restart=always
Run Code Online (Sandbox Code Playgroud)
它会定期向看门狗发送相应的信号.程序似乎不时挂起并由监视程序终止,然后重新启动.在看门狗终止之前,我想通过执行命令或运行其他脚本(例如运行gdb -p <PID> --batch -ex 'thread apply all backtrace')从程序中捕获一些信息.我该怎么做?
请考虑以下脚本:
from PIL import Image
import numpy as np
im = Image.new("F", (512, 512), 0.)
Run Code Online (Sandbox Code Playgroud)
这导致了
>>> np.asarray(im)
array([[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]], dtype=float32)
Run Code Online (Sandbox Code Playgroud)
正如我所料.但是,如果我有一个更大的图像,比如说im = Image.new("F", (10240, 8600), 0.),转换会产生一个数组,其中PIL图像是唯一的元素:
>>> np.asarray(im)
array(<PIL.Image.Image image …Run Code Online (Sandbox Code Playgroud) 我在C++项目中使用谷歌测试.某些函数使用assert()来检查无效的输入参数.我已经读过关于死亡测试(什么是Google测试,死亡测试)并在我的测试用例中开始使用它们.
但是,我想知道是否有一种方法可以抑制由断言失败引起的运行时错误.此时,每次失败的断言都会创建一个弹出窗口,每次运行测试时都必须关闭该窗口.随着我的项目的增长,这种行为越来越以不可接受的方式扰乱工作流程,我倾向于不再测试断言() - 断言.我知道通常可以禁用断言,但是从测试框架内部抑制操作系统生成的警告似乎更方便.
给定一个包含数千个测试的大型项目,其中一些需要几分钟才能完成。按顺序执行时,整个测试集需要一个多小时才能完成。通过并行执行测试可以减少测试时间。
据我所知,没有办法直接从 googletest/mock 做到这一点,就像一个--async选项。还是我错了?
一种解决方案是确定可以并行运行的测试并编写一个脚本,在单独的作业中启动每个测试,即
./test --gtest_filter=TestSet.test1 &
./test --gtest_filter=TestSet.test2 &
...
Run Code Online (Sandbox Code Playgroud)
但这需要额外的维护工作,并在测试代码与其执行之间引入另一个“层”。我想要一个更方便的解决方案。例如,可以给 TEST 和 TEST_F 宏添加后缀并引入 TEST_ASYNC、TEST_F_ASYNC。然后,使用 TEST_ASYNC 定义的测试将由独立线程执行,同时开始。
如何做到这一点?或者还有其他解决方案吗?
我想使用 Robotframework 和 Selenium 对网站进行自动化测试。我的测试在 Firefox 中运行良好。但是,我想改用 Chromium。根据"Open Browser"的文档,它应该适用于 Chrome。但是在我的 Ubuntu 机器上,我无法开箱即用地使用该浏览器。
这是一个最小的例子:
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
Open Browser And Check Title
Open Browser about:blank chromium
Title Should Be ${EMPTY}
Run Code Online (Sandbox Code Playgroud)
它失败并出现以下错误:
ValueError: chromium is not a supported browser.
Run Code Online (Sandbox Code Playgroud)
有没有办法在 Robotframework 中设置 Chromium 以与 Selenium 一起使用?
编辑:这最初是针对 Selenium2Library 要求的。在迁移到版本 3 时,他们从名称中删除了版本号。问题已相应更新。
testing chromium robotframework selenium-chromedriver selenium-webdriver
python ×3
testing ×3
c++ ×2
googletest ×2
alpine-linux ×1
assert ×1
asynchronous ×1
chromium ×1
distutils ×1
docker ×1
googlemock ×1
install ×1
linux ×1
numpy ×1
python-2.7 ×1
syntax-error ×1
systemd ×1
watchdog ×1
windows ×1