pytest 3.4.2测试py代码必须仅在相应的应用程序代码python版本中编写?

2024-05-20 09:31:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我们在项目应用程序代码中使用python2.7.4,并计划使用pytest3.4.2版本进行单元测试。将来我们可能会将应用程序代码升级到最新的python3.6.X

假设pytest 3.4.X同时支持python2.7和>;3.3版本,那么测试代码文件(例如:test_我的模块.py)必须用任何python版本编写,或者必须用用于应用程序代码的python版本编写。你知道吗

为了准确地指出问题

python 2.7.x版本的应用程序代码-->;pytest的相应测试代码必须用2.7.x兼容代码编写,甚至可以用python 3.4版本兼容代码?编写?。pytest会相应地理解测试代码并运行测试文件吗?。你知道吗


Tags: 模块文件项目代码pytestgt版本
1条回答
网友
1楼 · 发布于 2024-05-20 09:31:58

为了在Python2.7中测试您的代码,您将运行您的测试代码,它将导入您的应用程序代码并调用它。这一切都发生在同一个口译员身上。你知道吗

因此,为了测试python2.7代码,测试代码需要在python2.7解释器下运行,也就是说,测试代码需要是与python2.7兼容的代码本身。你知道吗

您可以有两个版本的测试代码,但我建议您使用类似“six”的代码。six包有很多函数和方法,这意味着您可以编写一个代码基,当代码运行并调用six库时,它可以决定如何调用特定的功能。尽可能为所有Python版本提供一个测试代码库(特别是如果应用程序在所有版本下都执行相同的操作)。你知道吗

我还建议您使用期货,这样您的Python代码就可以访问尽可能多的python3特性。你知道吗

许多有用的Python3特性(如mock库)都已被后端口到Python2—例如,如果您决定使用“six”,那么您的代码可以做到这一点:

if six.PY2:
     import mock
else:
     from unittest import mock

总是得到正确的模拟图书馆。你知道吗

最后—这是一个使用虚拟环境的完美示例;您有一个特定的虚拟环境用于Python2测试—您只安装了需要在Python2下测试的库(如果需要,包括mock之类的backport);然后,当您稍后测试Python3时—您将运行具有潜在可用性的Python3代码一组不同的库)。你知道吗

相关问题 更多 >