在我的测试中,我想运行一个命令来确保我的虚拟环境中安装的包与Pipfile.lock
.
有这样的命令吗?
pipenv checkifinstalled || exit 1
这个问题可以归结为以下两个步骤:
转换Pipfile.lock
为requirements.txt
文件(以 生成的格式pip freeze
)。
pipenv lock -r
(或pipenv lock -r --dev
)来完成检查已安装的软件包是否与生成的requirements.txt
文件匹配。
以下是我如何将它们放在一起进行测试:
import pkg_resources
import subprocess
import unittest
class DependencyChecks(unittest.TestCase):
def test_requirements_installed(self):
requirements_lines = subprocess.check_output(["pipenv", "lock", "-r", "--dev"], text=True).splitlines()
req_lines = [line for line in requirements_lines if not line.startswith("-i ")]
requirements = pkg_resources.parse_requirements(req_lines)
for requirement in requirements:
req = str(requirement)
with self.subTest(requirement=req):
pkg_resources.require(req)