测试人社区

关于pytest环境配置的问题

前置条件
已经配置了pytest运行的环境变量,为什么在操作的时候找不到呢?

但是如果运行命令为 python -m pytest就能成功执行,查了一下说这种方法是将脚本作为一个模块导入,不是很能理解。

问题

1、python -m应该怎么理解呢?

>>> python xxx.py  # 直接运行
>>> python -m xxx # 相当于import,将库中的python模块用作脚本去运行

主要区别在于 sys.path 不同

直接运行会将该脚本所在目录添加至 sys.path
当做模块启动则会将当前运行命令的路径添加至 sys.path

运行该脚本所在的目录 VS 当前运行命令的路径(如果在被运行脚本的目录下) 那岂不是一样的路径吗?

  • pytest是一个第三方库,并不在当前的工程目录下存放,而是存放在统一的第三方库存放位置,取决于你当前使用的是虚拟python环境还是本地python环境。
  • 如果你使用的是本地的python环境,但是又没有将pytest库(python库)安装后生成的运行文件的位置放入path环境变量的话,就会导致你现在这个情况,无法直接通过命令行运行类似的命令
  • 看到你将pytest执行文件的路径加入到了path变量中,这样是不能直接运行的,因为path变量默认存放的都是目录,如果你将路径写到具体文件,会导致系统将其作为目录处理,无法找到对应的真正文件
  • 所以正确的做法应该是将python库的执行文件目录加入到path中(针对你的情况应该是image 这个目录)

添加路径那里明白了,谢谢老师

关于这一点的意思,是指-m的时候,会把pytest命令运行的路径自动放到sys.path下面吗?

一般第三方库使用pip的方式安装都会安装在 site-package/路径下,你可以打印一下sys.path ,python 会在这里面的路径列表中顺序查找。

明白你说的这点,现在比较模糊就是加上-m的时候,是把什么东西放到了sys.path下面呢?