测试工具面试题, 软件测试中,pytest 的 yield 有什么作用?
测试工具面试题, 软件测试中,pytest 的 yield 有什么作用?
QA
Step 1
Q:: 软件测试中,pytest 的 yield 有什么作用?
A:: 在 pytest 中,yield 主要用于实现基于 yield 的 fixture。在测试中,fixture 是用于在测试函数执行之前准备一些状态或数据,以及在测试完成后进行清理操作。通过使用 yield,你可以在 yield 之前编写设置代码,yield 之后编写清理代码。测试函数会在 yield 语句暂停时执行。举个例子,如果你需要在测试中创建一个数据库连接,并在测试结束后关闭它,你可以使用 yield 来实现这个逻辑。
Step 2
Q:: pytest 中 fixture 和普通函数的区别是什么?
A:: pytest 中的 fixture 是一种特殊的函数,通常用于为测试准备一些状态或数据。fixture 函数可以通过使用 @pytest.
fixture 装饰器来定义,并且可以通过在测试函数的参数列表中列出 fixture 的名称来使用。在测试函数执行之前,pytest 会自动调用这些 fixture 函数,并将其返回值传递给测试函数。而普通函数则没有这种自动调用的机制,也不能作为测试函数的参数来使用。
Step 3
Q:: 如何在 pytest 中共享 fixture?
A:: 在 pytest 中,可以通过使用 conftest.py 文件来共享 fixture。将 fixture 定义在 conftest.
py 文件中后,pytest 会自动检测并在所有测试模块中可用。此外,你还可以通过将 fixture 设置为模块级别或会话级别,以在模块或整个测试会话中共享数据或状态。
Step 4
Q:: 什么是 pytest 的参数化测试?如何实现?
A:: pytest 的参数化测试允许你使用不同的输入数据多次执行同一个测试函数,从而避免代码重复。你可以通过 @pytest.mark.
parametrize 装饰器来实现参数化测试。此装饰器接受两个参数:一个是参数名列表,另一个是参数值列表。pytest 会根据提供的参数值列表生成多次测试执行,每次执行时会用一组不同的参数值来调用测试函数。