当前位置: 首页 > 知识库问答 >
问题:

具有多个命令行选项的pytest

公孙宏远
2023-03-14

我对pytest的一个命令行参数没有问题。

运行程序时:
python-m pytest-q-v--confcutdir=/usr/local/penguin/home/px09/p001--cmdopt=type1 test suite.py

我得到了预期的回应:

================================================ FAILURES ================================================
______________________________________________ test_answer _______________________________________________

cmdopt = 'type1'

    def test_answer(cmdopt):
        if cmdopt == "type1":
            print ("first")
        elif cmdopt == "type2":
            print ("second")
>       assert 0 # to see what was printed
E       assert 0

test-suite.py:7: AssertionError
------------------------------------------ Captured stdout call ------------------------------------------
first
======================================== 1 failed in 0.01 seconds ==============

当我尝试多个参数时,我会遇到问题

def test_answer(cmdopt):
    if cmdopt == "type1":
        print ("first")
    elif cmdopt == "type2":
        print ("second")
    assert 0 # to see what was printed

def test_answer2(cmdopt2):
    if cmdopt2 == "type1":
        print ("first")
    elif cmdopt2 == "type2":
        print ("second")
    assert 0 # to see what was printed
import pytest

def pytest_addoption(parser):
    parser.addoption("--cmdopt", action="store", default="type1",
        help="my option: type1 or type2")
    parser.addoption("--cmdopt2", action="store", default="type3",
                     help="my option: type3 or type4")

@pytest.fixture
def cmdopt(request):
    return request.config.getoption("--cmdopt")

def cmdopt2(request):
    return request.config.getoption("--cmdopt2")

_____________________________________设置测试应答器2时出错/usr/local/penguin/home/px09/p001/test-suite.py,第9行def测试应答器2(cmdopt2):未找到E夹具“cmdopt2”

/usr/local/penguin/home/px09/p001/test suite.py:9

================================================ FAILURES ================================================
______________________________________________ test_answer _______________________________________________

cmdopt = 'type1'

    def test_answer(cmdopt):
        if cmdopt == "type1":
            print ("first")
        elif cmdopt == "type2":
            print ("second")
>       assert 0 # to see what was printed
E       assert 0

test-suite.py:7: AssertionError
-

共有1个答案

顾宸
2023-03-14

我认为问题很简单。只需在cmdopt2函数之前添加@pytest.fixture decorator

@pytest.fixture
def cmdopt(request):
return request.config.getoption("--cmdopt")

@pytest.fixture
def cmdopt2(request):
    return request.config.getoption("--cmdopt2")
 类似资料:
  • Node.js 自带了各种命令行选项。 这些选项开放了内置的调试、执行脚本的多种方式、以及其他有用的运行时选项。运行 man node 可在一个终端中查看操作手册。 概要 node [options] [v8 options] [script.js | -e "script" | -] [--] [arguments] node debug [script.js | -e "script" | <

  • Shebang 行 几乎每个 Perl 程序都如此开始: #!/usr/bin/perl 这是 UNIX 结构,它告诉 Shell 直接执行余下的输入程序文件。 你可以在此行添加 Perl 的任何命令行选项,它们将成为选项之后命令行的一部分。 如果你有一个程序包含: #!/usr/bin/perl -T 然后执行: perl -l program.pl -l 和 -T 两个选项都会使用,但

  • 我在我的应用程序中构建了CSRF保护,只需在每个页面加载上生成一个随机令牌,将其放入会话,然后将令牌绑定到

  • 本文向大家介绍gcc“你好,世界!” 具有常见的命令行选项,包括了gcc“你好,世界!” 具有常见的命令行选项的使用技巧和注意事项,需要的朋友参考一下 示例 对于具有单个源文件的程序,使用gcc很简单。 要从命令行编译文件hello_world.c: 然后gcc将编译程序并将可执行文件输出到文件a.out。如果要命名可执行文件,请使用-o选项。 可执行文件将被命名为hello_world而不是a.

  • Ruby 一般是从命令行运行,方式如下: 解释器可以通过下列选项被调用,来控制解释器的环境和行为。 选项 描述 -a 与 -n 或 -p 一起使用时,可以打开自动拆分模式(auto split mode)。请查看 -n 和 -p 选项。 -c 只检查语法,不执行程序。 -C dir 在执行前改变目录(等价于 -X)。 -d 启用调试模式(等价于 -debug)。 -F pat 指定 pat 作为默

  • Envoy由JSON配置文件以及一组命令行选项驱动。以下是Envoy支持的命令行选项。 -c \, --config-path \ (必选)指向v1或v2 JSON/YAML/proto3配置文件)的路径。若设置-v2-config-only选项,则将被解析为一个v2引导配置文件,如果是v1 JSON配置文件,则返回失败。对于v2配置文件,有效的扩展名是.json,.yaml,.pb和.pb_te