Python python 利用 ddt 数据驱动测试时 yaml 文件的数据如何实现变量化?

打工人 · 2023年03月13日 · 最后由 面对疾风吧 回复于 2023年03月15日 · 4677 次阅读

python 利用 ddt 数据驱动测试时 yaml 文件的数据如何实现变量化?因为上下接口关联,数据需要动态化

共收到 3 条回复 时间 点赞

在 testCase 层定义个变量就好,没必要搞全量的数据驱动

python 利用 ddt 数据驱动测试时 yaml 文件的数据如何实现变量化?因为上下接口关联,数据需要动态化

在 Python 中使用 ddt 进行数据驱动测试时,可以通过 PyYAML 库来读取和解析 YAML 文件。要实现数据的变量化,可以使用 YAML 的引用功能。

在 YAML 中,可以使用 &* 来定义和引用锚点。通过定义锚点,可以将某个值赋给一个变量,然后在后面的数据中使用该变量来代替该值。

例如,假设我们有一个 YAML 文件如下:

yaml

- &user
  name: alice
  age: 25
- &book
  title: The Great Gatsby
  author: F. Scott Fitzgerald
- name: <<*user.name>> 
  age: <<*user.age>> 
  favorite_book:
    <<*book>>
- name: bob
  age: 30
  favorite_book:
    title: To Kill a Mockingbird
    author: Harper Lee

在上面的 YAML 文件中,我们定义了两个锚点 &user&book,然后在数据中使用了这些锚点来创建两个对象。

在第一个对象中,我们使用了 <<*user.name>><<*user.age>> 来引用 &user 锚点中的值,并将其作为变量插入到数据中。

在第二个对象中,我们创建了一个新的对象,并使用了新的值来填充它。在这个对象中,我们没有使用锚点。

在实际的测试中,你可以通过读取 YAML 文件并将其转换为 Python 对象来使用这些变量。然后,你可以将变量传递给测试函数,以便在运行测试时使用它们。

例如,在使用 PyYAML 库时,你可以使用以下代码来读取 YAML 文件:

python

import yaml

with open('data.yaml', 'r') as f:
    data = yaml.load(f, Loader=yaml.FullLoader)

然后,你可以将 data 传递给测试函数,例如:

python

import unittest
from ddt import ddt, data, unpack

@ddt
class MyTests(unittest.TestCase):

    @data(*data)
    @unpack
    def test_my_function(self, name, age, favorite_book):
        # 测试逻辑

在上面的测试函数中,我们将 data 中的每个对象作为参数传递给测试函数,并使用 @unpack 来解包每个对象中的变量。然后,我们可以在测试函数中使用这些变量来运行测试。

用处不大 这东西

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册