在 运行 python 单元测试时切换分支
Switching branches while running python unit tests
这更像是一个关于测试安全的一般问题,而不是一个特定的代码问题。假设我的 git
存储库有功能分支,在我合并回开发或主控之前,我总是 运行 一套单元测试。但是这些单元测试通常需要一段时间(大约一个小时)。所以我通常会开始测试,然后更改存储库中的分支,这样我就可以编写其他代码了……我假设这是安全的,因为 .pyc 文件已经创建了吗?
我建议您将测试执行卸载到适当的持续集成系统,例如 Jenkins or Travis。在测试过程中切换整个源代码树 运行 肯定会导致奇怪的问题。
还要考虑到您的测试套件可能同时包含单元测试和 集成 测试。单元测试应该很快! 运行0.1 秒的时间是一个缓慢的单元测试。涉及文件系统、与数据库通信、通过网络发送数据包等的测试是集成测试。您可以将这些调整回 运行ning 一天一次或两次。请参阅 Michael Feathers 的有效地使用遗留代码。
如果适当的 CI 由于某种原因不是首选,并且您可以使用一些脚本,那么您可以编写一个脚本来复制 git 修订版(git export 或 git new workdir + checkout there ) 并在该位置执行测试,同时继续进行更改。在大型 java 项目中对我来说效果很好。
这更像是一个关于测试安全的一般问题,而不是一个特定的代码问题。假设我的 git
存储库有功能分支,在我合并回开发或主控之前,我总是 运行 一套单元测试。但是这些单元测试通常需要一段时间(大约一个小时)。所以我通常会开始测试,然后更改存储库中的分支,这样我就可以编写其他代码了……我假设这是安全的,因为 .pyc 文件已经创建了吗?
我建议您将测试执行卸载到适当的持续集成系统,例如 Jenkins or Travis。在测试过程中切换整个源代码树 运行 肯定会导致奇怪的问题。
还要考虑到您的测试套件可能同时包含单元测试和 集成 测试。单元测试应该很快! 运行0.1 秒的时间是一个缓慢的单元测试。涉及文件系统、与数据库通信、通过网络发送数据包等的测试是集成测试。您可以将这些调整回 运行ning 一天一次或两次。请参阅 Michael Feathers 的有效地使用遗留代码。
如果适当的 CI 由于某种原因不是首选,并且您可以使用一些脚本,那么您可以编写一个脚本来复制 git 修订版(git export 或 git new workdir + checkout there ) 并在该位置执行测试,同时继续进行更改。在大型 java 项目中对我来说效果很好。