pytest中pytest_addoption用法
2023-5-31
| 2024-3-23
Words 1554Read Time 4 min
type
status
date
slug
summary
tags
category
icon
password
URL
pytest_addoption 是 Pytest 提供的一个 hook 函数,可以用于向 Pytest 添加自定义的命令行选项和参数。通过这个函数,我们可以在运行 Pytest 时向其传递一些额外的数据,这些数据可以用来控制 Pytest 的行为或者传递一些测试数据。
下面是一个简单的例子,演示如何使用 pytest_addoption 添加一个自定义的命令行选项,用来控制测试的行为:
这个例子定义了一个名为 myopt 的自定义命令行选项,当这个选项被指定时,测试可以执行一些额外的功能。如果该选项未指定,则测试将被跳过。注意,在这个例子中,我们使用了 pytest_runtest_setup hook 函数,可以用来在测试运行之前执行一些操作。在这个函数中,我们检查测试是否带有 myopt 标记,如果是,就检查 --myopt 是否被指定,如果未指定,则使用 pytest.skip 跳过该测试。
我们可以在终端输入以下命令来运行上述示例代码中的测试:
这样就会启用 myopt 选项,并执行与之相关的测试。如果我们不想使用 myopt 选项,则可以省略 --myopt 参数,这样测试就会被跳过。
除了示例中的 store_true 之外,还有其他的 action 参数可以用于指定选项的行为,例如:
  • store: 将选项的值存储在一个变量中。
  • append: 将选项的值添加到一个列表中。
  • count: 记录选项被指定的次数。
  • 等等。
pytest_addoption 还可以接受其他参数,例如 defaulttypehelp 等,用于指定选项的默认值、数据类型、帮助信息等。具体可以参考 Pytest官方文档中对 pytest_addoption 的说明。
 
Pytest 像 argparse 一样提供了一种自定义传参的方式,可以通过 pytest_addoption hook 函数向 Pytest 添加自定义的命令行选项和参数。这些选项和参数可以用于控制测试的行为或者传递一些测试数据。
下面是一个简单的例子,演示如何使用 pytest_addoption 添加一个自定义的命令行选项和参数:
在上面的例子中,我们定义了两个自定义的选项:--myopt--myarg。其中,--myopt 是一个开关选项,当该选项被指定时,会开启某些测试功能。--myarg 是一个带参数的选项,用于指定一些测试数据。type=str 指定了参数的类型为字符串,default='default' 指定了参数的默认值为 'default'help 则是帮助信息,用于向用户描述该选项的作用和用法。
使用自定义选项和参数运行 Pytest 的方法与普通运行方式类似,只需要在终端输入相应的命令即可。例如,我们可以使用以下命令来运行带有自定义选项和参数的 Pytest 测试:
这样就会启用 --myopt 选项,并将 --myarg 参数设置为 'hello'。我们可以在测试代码中使用 request.config.getoption() 方法来获取这些选项和参数的值,例如:
在上面的测试代码中,我们使用 request.config.getoption() 方法获取了 --myopt--myarg 的值,并进行了相应的处理。如果 --myopt 被指定,则输出 'myopt is enabled',否则不输出。--myarg 的值则被存储在 myarg_value 变量中,并输出 'myarg value is hello'
需要注意的是,我们需要将 request 参数传递给测试函数,这样才能在测试函数中使用 request.config.getoption() 方法获取选项和参数的值。
除了 store_truetype 参数之外,pytest_addoption 还支持其他的参数,例如 choicesactiondefaulthelp 等,用于指定选项和参数的可选值、行为、默认值、帮助信息等。具体可以参考 Pytest 官方文档中对 pytest_addoption 的说明。
 
 
是的,可以使用 request.config.getoption() 方法来获取 Pytest 运行时传递的自定义选项和参数的值。该方法的语法如下:
其中,name 参数为选项或参数的名称,value 则为其对应的值。如果该选项或参数未被指定,则返回 None
例如,假设我们在 Pytest 中定义了一个名为 --myarg 的自定义参数,我们可以在测试函数中使用 request.config.getoption() 方法获取该参数的值,例如:
在上面的测试代码中,我们使用 request.config.getoption() 方法获取了 --myarg 的值,并将其存储在 myarg_value 变量中。然后,我们使用 print() 函数输出该变量的值,以便在控制台中查看。
当我们运行 Pytest 时,可以使用 --myarg 参数来指定自定义参数的值,例如:
这样就会将 --myarg 参数设置为 'hello',测试代码中的 request.config.getoption('--myarg') 方法就会返回 'hello'
除了 request.config.getoption() 方法之外,还有其他方法可以获取 Pytest 的自定义选项和参数的值,例如:
  • config.getoption(name): 获取命令行选项和参数的值。
  • config.getini(name): 获取 INI 文件中的配置项的值。
  • config.getoptionbool(name): 获取布尔类型的选项和参数的值。
  • config.getoptionint(name): 获取整数类型的选项和参数的值。
  • config.getoptionfloat(name): 获取浮点数类型的选项和参数的值。
  • 等等。
这些方法的使用方式与 request.config.getoption() 方法类似,具体可以参考 Pytest 官方文档中对 Config 对象的说明。
pytest.mark.parametrizerequirements.txt 安装本地包
Loading...
Catalog