我需要测试我的 Python 包是否可以在不同的系统上正常工作。我找到了针对不同 Python 版本的Tox,但是对于 Windows、Linux 和 Mac 等不同的操作系统呢?
你能给我推荐一种方便的方法来测试我的代码是否适用于所有系统吗?
您将需要(可能是虚拟的)机器运行每个操作系统之一。就我个人而言,我只是在不同的物理机器上运行我的单元测试,但我几乎所有的代码都是独立于操作系统的,所以我可以在一天中在一个操作系统上进行大部分开发,然后在其他操作系统上运行测试一天结束。
如果您有依赖于操作系统的代码(例如,Windows 处理 Pythonmultiprocessing
包的方式与 Unix 不同),您可以使用unittest
模块的跳过功能来跳过测试,例如,当您在 Mac OS 上运行测试时,Windows 的行为。
您可以使用 travis 在 linux、mac 和 windows 上运行测试。Travis 支持这些平台。这是最方便的选择。如果 repo 是开源的,那么 travis 是免费的。
假设您使用 Windows…… 我在 WSL2(Linux 2 的 Windows 子系统)上使用 Ubuntu。它基本上是一个虚拟机,但比 Hyper-V 或 Virtual box 快得多。除非您在 Windows Insiders Dev Channel 中,否则它不附带 GUI,但这可能不仅仅用于测试代码,您可以安装 GWSL(为 WSL 和 SSH 设计的 X 服务器)来提供 GUI。在我的笔记本电脑上,Hyper-V 和 VirtualBox 虚拟机在启动后几秒钟内就会崩溃,但 WSL2 可以平稳运行数小时的密集使用。对于 IDE,我建议安装 Visual Studio Code(在 Windows 上,而不是在 WSL2 VM 上),然后使用 Remote - WSL 扩展。我建议安装 Windows 终端来替换丑陋的 Windows 控制台主机。对于 MacOS,我猜你只需要使用普通的虚拟机。