我有一个用于 python 3.5 和 3.6 的包,它具有可选的依赖项,我想要在任一版本上运行的测试 (pytest)。
我在下面做了一个由两个文件组成的简化示例,一个简单__init__.py的示例,其中导入了可选包“请求”(只是一个示例),并设置了一个标志来指示请求的可用性。
mypackage/
??? mypackage
? ??? __init__.py
??? test_init.py
Run Code Online (Sandbox Code Playgroud)
该__init__.py文件的内容:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
requests_available = True
try:
import requests
except ImportError:
requests_available = False
Run Code Online (Sandbox Code Playgroud)
该test_init.py文件的内容:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pytest, sys
def test_requests_missing(monkeypatch):
import mypackage
import copy
fakesysmodules = copy.copy(sys.modules)
fakesysmodules["requests"] = None
monkeypatch.delitem(sys.modules,"requests")
monkeypatch.setattr("sys.modules", fakesysmodules)
from importlib import reload
reload(mypackage)
assert mypackage.requests_available == False
if __name__ == '__main__': …Run Code Online (Sandbox Code Playgroud) 我有一个仅依赖于 wxPython 的小型 python 程序。我在 Linux 上开发了这个,我已经设法在 Travis CI(github 上的 seguid_calculator)上使用 wine 设置了 Windows 可执行文件的自动构建。
我的解决方案涉及最近发布的 wine 和 Pyinstaller 的组合。
我想为 MacOS 做类似的事情。我知道 Travis 上也有一个 MacOSX 构建环境。我对 MacOSX 操作系统的经验为零,我没有 Mac。我了解到您可以使用称为“自制软件”的东西安装第三方软件包
有没有我想做的例子?一个示例 travis.yml 文件会很棒!
感谢您的任何输入,/Björn
* 编辑 *
我创建了一个仅打开一个窗口的示例 wxpython 应用程序。它位于https://github.com/BjornFJohansson/macapp。我使用下面的 .travis.yml 生成不起作用的可执行文件。
os:
- osx
language: objective-c
python:
- '2.7'
before_install:
- brew update
- brew outdated xctool || brew upgrade xctool
- brew install python
- brew install wxpython
- pip install pyinstaller
- pyinstaller --noconsole --onefile …Run Code Online (Sandbox Code Playgroud)