python - $ pytest 和 $ python -m pytest 测试之间的区别
问题描述
我想了解跑步之间有什么区别:
$ pytest
和
$ python -m pytest tests
我在 Mac 上的虚拟环境中工作。第一个解决方案给了我一个错误:
ModuleNotFoundError: No module named 'app'
第二个解决方案工作正常。
为什么第二个解决方案有效而第一个解决方案无效?我怎样才能使它与 just 一起工作$ pytest
?
我的文件夹结构:
├── app.py
├── requirements.txt
├── templates
├── tests
│ ├── conftest.py
│ ├── functional
│ │ ├── __init__.py
│ │ └── test_s.py
│ └── unit
│ ├── __init__.py
│ └── test_app.py
└── venv
在 test_app.py 中,这一行失败:
from app import app
解决方案
python -m pytest
将当前目录添加到 sys.path,即允许您从那里导入模块。
这暗示有些东西 - 让我们称之为 - 对于您的目录结构来说不是最佳的。
为什么这可能不是一件好事,您可以阅读这篇精彩的博客文章
https://blog.ganssle.io/articles/2019/08/test-as-installed.html
我还写了一篇关于这个主题的简短博客文章:
https://jugmac00.github.io/til/what-is-the-difference-between-invoking-pytest-and-python-m-pytest/
推荐阅读
- c - 查找 int 数组 C 中的所有回文
- arrays - NumPy 数组的最小值和最大值都是 NaN
- javascript - 如何使用 fetch 将数据发布到 php
- php - Symfony 信使队列与绑定键 - 重试策略
- c - 无法使用结构来存储和稍后使用 recvfrom 打印 udp 数据
- android - 我可以在 Android 上使用 Guice 吗?
- java - 结果 rawResult.getContents android 更改 url
- python - 从动态帧转到火花数据帧然后返回 AWS Glue 时丢失列数据
- php - 使用 Laravel 将控制器功能插入视图
- python - 在 Pygame 中保存绘图历史以实现 Ctrl Z