python - 访问Travis-CI上的剪贴板

标签 python pytest travis-ci pyperclip xclip

我正在尝试在application上运行(集成?)测试,以验证它是否确实将期望的字符串使用pyperclip复制到剪贴板。

这部分正在我的开发计算机(Windows 10)上工作;但是在travis-ci上失败,我在travis作业日志中得到以下信息。

self = <pyperclip.init_no_clipboard.<locals>.ClipboardUnavailable object at 0x7ff0cd743588>
args = ('7 809823 102890 string 291',), kwargs = {}
    def __call__(self, *args, **kwargs):
>       raise PyperclipException(EXCEPT_MSG)
E       pyperclip.PyperclipException: 
E           Pyperclip could not find a copy/paste mechanism for your system.
E           For more information, please visit https://pyperclip.readthedocs.io/en/latest/introduction.html#not-implemented-error
../../../virtualenv/python3.7.1/lib/python3.7/site-packages/pyperclip/__init__.py:301: PyperclipException


根据pyperclip documentation,在没有复制/粘贴机制的情况下,这会在Linux上发生。解决方案是安装以下工具之一(引用pyperclip docs):


sudo apt-get install xsel安装xsel实用程序。
sudo apt-get install xclip安装xclip实用程序。
pip install gtk安装gtk Python模块。
pip install PyQt4安装PyQt4 Python模块。


所以在我的.travis.yml文件中,

before_install:
  - sudo apt-get install xclip


我也尝试过xsel,结果相同。

由于travis上的系统是Ubuntu 16.04.6,因此我尝试将sudo apt-get install python3-pyperclip添加到before_install键,结果相同。

我无法通过将它们添加到gtk中的PyQt4键来安装install.travis.yml

install:
  - pip install -r requirements_dev.txt
  - pip install PyQt4
  # or
  - pip install gtk



由于这些都导致以下错误:

 Could not find a version that satisfies the requirement gtk (from versions: )
No matching distribution found for gtk
The command "pip install gtk" failed and exited with 1 during .


至此,我的before_install看起来像这样:

  - sudo apt-get install xclip
  - sudo apt-get install xsel
  - sudo apt-get install python3-pyperclip
  - sudo apt-get install gtk2.0


这似乎过大(仍然无法正常工作);但我目前对如何通过该测试一无所知。任何指针将不胜感激。

谢谢

最佳答案

xclip需要X服务器才能运行,而Travis机器以无头模式运行。您需要在虚拟帧缓冲区中运行命令;除了xvfb之外,还安装xclip并使用xvfb-run pytest代替pytest。完整的配置示例:

language: python
addons:
  apt:
    packages:
    - xclip
    - xvfb
python:
  - "3.7"

# setup installation
install:
  - pip install -r requirements_dev.txt

script: xvfb-run pytest


这是一个示例build on Travis。注意,我使用addons声明应随APT安装的依赖项;在before_install部分中显式安装它们的解决方案也是完全有效的,只是一个问题。

本文翻译自 https://stackoverflow.com/questions/57743427/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。


相关文章:

python - 如何在Pygame中获得子画面的位置?

python - Python pytest unittest.TextTestRunner没有运行特定的套件

linux - 在Travis-CI中采购.bashrc无法正常工作

r - 计算代码覆盖率时,Travis-CI上的“无法找到软件包目录”错误

python - 避免在STYLE组件中使用CDATA标签

python - 如何在列表理解中添加列表列表

python - pd.DataFrame(data,columns = [])。如何传递带有嵌套字典的数据?

python - 如何运行所有PyTest测试,即使其中一些测试失败了?

python - linux anaconda环境未安装模块

ruby - 如何在Travis CI的一个项目中运行Node.js和Ruby测试