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 还可以接受其他参数,例如 default、type、help 等,用于指定选项的默认值、数据类型、帮助信息等。具体可以参考 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_true 和 type 参数之外,pytest_addoption 还支持其他的参数,例如 choices、action、default、help 等,用于指定选项和参数的可选值、行为、默认值、帮助信息等。具体可以参考 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 对象的说明。