py.test 在命令中使用 -m 以及目录路径

py.test use -m AS WELL as directory path in command

除了在特定 file/folder 中将其过滤为仅 运行 测试之外,我只想在我的测试套件中进行 运行 selenium 测试。看来我应该能够使用 -m 选项和路径位置参数来完成此操作。此外,我在 bash 脚本中执行此操作。

例如,我试过这样的事情:

#!/bin/bash
# ...some logic here for determining `EXTRA` arg
EXTRA = "not selenium"
py.test -m $EXTRA -v -s --tb=long --no-flaky-report ~/project/mytests/test_blerg.py

然后我的测试看起来像这样(仍然使用 xunit 风格 类):

@pytest.mark.selenium
class BaseTest(UnitTest):
    pass

class ChildTest(BaseTest):

    def test_first_case(self):
        pass

当我 运行 上面描述的 py.test 命令时,我得到这个:

============================================================================ no tests ran in 0.01 seconds ============================================================================
ERROR: file not found: selenium"

不完全确定为什么这不起作用。我会尝试手动覆盖 pytest_runtest_setup(),但我觉得我应该能够在不这样做的情况下完成我想要的。另外,仅供参考,这个一个django项目,使用Django==1.8.7pytest-django==2.9.1

任何帮助将不胜感激:)

想通了。这与 py.test 本身无关。我在 bash 脚本中调用 py.test 命令时出错。修改后的命令如下所示:

py.test -m "$EXTRA" -v -s --tb=long --no-flaky-report ~/project/mytests/test_blerg.py

按预期工作!