我在从 PyCharm 内部运行 pytest 测试时遇到问题
我在C:\Temp 中名为agents_automation_2 的文件夹中有一个文件x_tests.py,该文件的内容是
import pytest
def test_mytest():
assert False
当我运行时,我得到以下输出
C:\Python36-32\python.exe“C:\Program Files\JetBrains\PyCharm 2017.3.2\helpers\pycharm_jb_pytest_runner.py”--路径 C:/Temp/agents_automation_2 使用 C:\Temp gents_automation_2 中的参数 C:/Temp/agents_automation_2 启动 py.test ===============================测试会话开始================== =========== 平台 win32 -- Python 3.6.4、pytest-3.4.2、py-1.5.2、pluggy-0.6.0 根目录:C:\Temp gents_automation_2,ini文件: 插件:xdist-1.22.0、forked-0.2 已收集 0 件物品 ======================== 0.01 秒内没有运行任何测试 ==================== =====
但是,当我从文件夹内的常规 Windows 命令行运行时,测试运行正常
知道可能是什么问题吗?
谢谢!!!
您的测试文件的名称不符合默认的 pytest 发现规则。如果您将 x_tests.py 更改为 x_test.py,它将运行测试并按预期失败。请查看此页面,了解有关 pytest 发现规则的更多信息。
在我的例子中,测试类包含 init 方法,也会导致空套件。你需要做的是避免编写 init 方法。
确保 PyCharm 配置为使用 PyTest。默认情况下它使用单元测试。查看此文档:https://www.jetbrains.com/help/pycharm/choosing-your-testing-framework.html。正确配置 PyCharm 以使用 PyTest 后,例如,当您打开测试文件的上下文菜单时,您将看到类似 Run 'PyTest in ...'
@pytest.mark.usefixtures("setup1")
class TestClass:
def test_abc(self):
print("testcase execution")
就我而言,我只需从项目中删除
pytest.ini
文件。
对于使用 WSL 的用户,问题可能与 WSL 无法访问有关。 如果您在 WSL 上遇到此错误,
Logon failure: the user has not been granted the requested logon type at this computer.
尝试在 PowerShell 中重新启动
vmcompute
服务(以管理员身份运行):
powershell restart-service vmcompute
我也有同样的问题。这是由我的测试的超类中的循环导入引起的。当我尝试直接运行这个超类(它本身没有测试)时,我看到了错误消息。