代码之家  ›  专栏  ›  技术社区  ›  Tobbey

pytest的bash脚本中的引号

  •  0
  • Tobbey  · 技术社区  · 6 年前

    我尝试编写一个脚本,帮助根据用户输入选择pytest选项。 不幸的是,脚本总是因为与标记相关的最新参数而失败。

    我怀疑marker选项中的引号是问题的根源。不幸的是,我找不到任何解决办法。

    以下是MWE:

    测试内容.sh

    #!/bin/bash
    
    options=("-v")
    options+=("-m \"not dummy\"")
    
    echo "about to launch pytest ${options[@]}"
    pytest ${options[@]}
    

    试验内容:

    import pytest
    
    @pytest.mark.dummy
    def test_dummy():
        assert(True)
    

    现在运行test.sh脚本的输出:

    即将启动pytest-v-m“非虚拟” ===================================================================================================================================================平台linux--Python 3.6.4、pytest-3.3.2、py-1.5.2、pluggy-0.6.0 --/home/[…]/anaconda3/bin/python cachedir:.cache rootdir:/home/[…]/pytest,inifile:插件: 第2.5.1节

    =============================================================================================================================================0.00秒内未运行任何测试 =============================================================================================================================================错误:找不到文件:dummy“

    当然,运行生成的命令

    效果很好。如何克服这个问题

    先谢谢你

    2 回复  |  直到 6 年前
        1
  •  5
  •   Poshi    6 年前

    #!/bin/bash
    
    options=("-v")
    options+=("-m" "not dummy")
    
    echo "about to launch pytest ${options[@]}"
    pytest "${options[@]}"
    
        2
  •  -2
  •   Tobbey    6 年前

    实际上,a找到了解决这个问题的方法。显然,最简单的解决方案是将整个命令“重铸”为一个字符串,并进行eval评估。

    pytest${选项[@]}

    eval pytest${options[@]}