4

我在 python 2.7.3 中创建了一个包含大约 100 个模块的中型项目。我希望找出与我的代码兼容的以前版本的 python(例如:2.6.x、2.7.x)(在公共领域发布我的项目之前)。找到它的最简单方法是什么?

我知道的解决方案 -

  1. 安装多个版本的 python 并检查每个版本。但是我还没有定义测试用例,所以需要先定义它们。
  2. 阅读并比较我希望检查兼容性的各种 python 版本的变更日志,并据此找出。

请提供更好的解决方案。

4

4 回答 4

3

如果没有一些测试用例,我真的不知道如何解决这个问题。即使您的代码可以在旧版本的 python 中运行,如果没有一套充分测试您的代码的测试用例,也不能保证它可以正常工作

于 2013-06-25T17:09:14.983 回答
1

不,您所命名的几乎就是它的完成方式,尽管“最新消息”页面和文档本身可能比完整的变更日志更有用。对如此巨大的移动目标的兼容性即使是部分自动化也是不可行的。这并不像听起来那样多,因为:

  1. 有些人确实有测试套件;-)
  2. 您不需要(通常)考虑错误修复版本(例如各种 x 的 2.7.x)。您的代码可能需要修复错误,但通常 .0 版本非常可靠,并且与 xy0 兼容的代码可以在任何 xyz 版本上运行。
  3. 由于向后兼容策略,建立一个最低支持版本就足够了,所有以后的版本(相同的主要版本)都将保持兼容。这对您的情况没有帮助,因为 2.7 是最后一个 2.x 版本,但是如果您的目标是 2.5,那么您通常不必检查 2.6 或 2.7 的兼容性。
  4. 如果您在编码时睁大眼睛,并且有一些经验和良好的记忆力,您就会知道您使用了最近版本中引入的一些功能。即使不知道具体是什么版本,也可以在文档中快速查找。
  5. 有些人着手支持特定版本的意图,并在开发时始终牢记这一点。即使它碰巧适用于其他版本,他们也会认为它不受支持并且不声称兼容。

因此,您可以将自己限制为 2.7(它已经发布了三年),或者对旧版本进行测试。如果您只想确定它是否兼容,而不是确定存在哪些不兼容以及如何修复它们,您可以:

  1. 在 What's New 页面中搜索新功能,最重要的是您使用的新语法。
  2. 检查您使用的第三方库的版本限制。
  3. 在您使用的标准库模块的文档中搜索新添加的功能。
于 2013-06-25T17:25:46.767 回答
1

1)如果您要保持与以前版本的兼容性,那么测试是要走的路。即使您的代码现在恰好兼容,如果您不注意,它也可能在将来的任何时候停止兼容。

2)如果向后兼容不是一个目标,而只是“对于那些足够幸运的人来说是一个不错的附加功能”,那么 OSS 的一个简单方法是让用户试用它,并指出“它已经过测试,<version>但可能在以前的版本中工作出色地”。如果您的用户群中有任何人对在早期版本中运行您的代码感兴趣(并保持与它的兼容性),他们可能会给您反馈。如果没有,为什么要打扰?

于 2013-06-25T17:37:09.280 回答
1

使用一些测试用例会容易得多,但手动测试可以给你一个合理的想法。

采用您希望支持的最远版本,(我建议使用 2.5.x,但如果必须的话,请更早 - 使用该版本手动测试,记录您所做的事情,特别是在哪里失败(如果有的话) - 如果它确实失败了然后要么解决问题,要么进行二分搜索,看看故障点在哪个版本消失。如果你从一个你很确定会失败的版本开始,这可能会更好,也许是 2.0。

于 2013-06-25T17:42:08.207 回答