小编Bjö*_*son的帖子

使用 pytest 测试 __init__.py 中可选依赖项的导入:Python 3.5 /3.6 的行为不同

我有一个用于 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)

python pytest python-3.5 python-3.6

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

如何在 Travis CI 上构建 MacOSX 可执行文件?

我有一个仅依赖于 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)

python macos wxpython

4
推荐指数
1
解决办法
2831
查看次数

标签 统计

python ×2

macos ×1

pytest ×1

python-3.5 ×1

python-3.6 ×1

wxpython ×1