【问题标题】:PyCharm: individually working tests, not finding a file when run in groupPyCharm:单独工作的测试,在组中运行时找不到文件
【发布时间】:2020-01-28 15:36:32
【问题描述】:

在我的 Python 项目中,我有一组单元测试,它们从数据子目录中的文件加载一些数据。

在 PyCharm (Community 2019.3) 中,单独运行它们中的每一个都可以工作,但是在组中运行它们时它们会失败,通过在项目侧边栏结构的“测试”目录中单击鼠标右键。

Dir 结构(仅显示 1 个示例):

我加载了一些模拟文件,例如一些 .ini 文件:单独执行时,它们可以工作,而在组中执行时,它们会失败。 输出:

--- Logging error ---
Traceback (most recent call last):

Failure
Traceback (most recent call last):
  File "/usr/lib/python3.6/unittest/suite.py", line 163, in _handleClassSetUp
    setUpClass()
  File "/home/.../tests/test_ConnectorUtils.py", line 22, in setUpClass
    with open("data/settings.ini") as fsettings:
FileNotFoundError: [Errno 2] No such file or directory: 'data/settings.ini'

单独运行时:

Testing started at 16:07 ...
/usr/bin/python3.6
    /snap/pycharm-community/175/plugins/python-ce/helpers/pycharm/_jb_unittest_runner.py
    --path /home/.../tests/test_ConnectorUtils.py
Launching unittests with arguments python -m
    unittest /home/.../tests/test_ConnectorUtils.py in /home/.../tests



Ran 5 tests in 0.009s

OK

不确定它是否相关,但在我的文件不是由 test_ 开始之前,所以 Pycharm 没有检测到任何测试,所以我重命名了它们,正如它所建议的那样:Pycharm - no tests were found?

我做的配置检查:

关注:PyCharm unittests only work individually

关注:Pycharm and unittest does not work

我找不到任何问题,请问有人有什么想法吗?

【问题讨论】:

    标签: unit-testing pycharm python-unittest


    【解决方案1】:

    在 Windows 10 上工作,为我解决的问题是从我的 WORKING 目录中删除“/tests”

    【讨论】:

    • 谢谢,但我不确定我是否关注您:我在同一项目级别以及同一项目目录中拥有 SRC 和测试。您的意思是从 PYTHONPATH 中排除测试吗?
    • 你有工作目录的字段,去掉/tests
    【解决方案2】:

    当您作为一个组运行所有测试时,PyCharm 使用与单独启动测试时不同的 --path 参数启动 _jb_pytest_runner.py。这个 --path 参数设置 pytest 正在运行的工作目录。

    当测试启动时,您应该能够在测试/调试控制台中看到打印出来的内容。类似于下面打印出工作目录的内容。

    运行单个测试会打印出类似于以下内容的内容:

    测试于下午 1:50 开始 ...

    使用参数启动 pytest

    C:/Users/username/PyCharmProjects/project_dir/test_dir/test_sub_dir/test --no-header --no-summary -q in C:\Users\username\PyCharmProjects\project_dir\test_dir\test_sub_dir\test

    运行一组测试会打印出类似于:

    测试于下午 1:58 开始 ...

    连接到 pydev 调试器(内部版本 213.6461.77)

    在 C:\Users\username\PyCharmProjects\project_dir 中使用参数 --no-header --no-summary -q 启动 pytest

    不同之处在于启动 pytest 的目录。

    要在每次运行单个测试时解决此问题:

    1. 转到运行 > 编辑配置...
    2. 在新的“运行/调试配置”窗口中,删除“Python 测试”下的所有配置(因为这些配置不会正确更新,需要重新创建)
    3. 点击“编辑配置模板...”(位于左下角)
    4. 在新窗口(“运行/调试配置模板”)中,在左侧展开“Python 测试”
    5. 选择“自动检测”
    6. 在“工作目录”字段中输入或导航到项目文件夹的路径(或每次运行 pytest 时您希望作为工作目录的任何文件夹)
    7. 点击应用
    8. 点击确定
    9. (现在回到“运行/调试配置”窗口)单击应用
    10. 点击确定
    11. 将测试函数中测试文件的文件路径更新为相对于您刚刚设置的工作目录
    12. 重新创建您的测试配置并尝试再次运行单个测试和组测试,再次检查测试控制台输出以确保 pytest 在您设置的工作目录中启动

    在每个单独的测试中修复它(如 PCamargo 所述):

    • 将您的个人测试配置的“运行/调试配置”窗口中的工作目录字段更改为分组 pytest 中正在运行的任何工作目录

    【讨论】:

      猜你喜欢
      • 2015-07-31
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 1970-01-01
      • 2020-01-12
      • 2014-12-15
      • 1970-01-01
      相关资源
      最近更新 更多