课件和 Demo 地址
https://gitee.com/geektime-geekbang/Selenium
作者回复: 看看是不是拼写错了
作者回复: 老师,你好。 业务层用例的setup_class函数中初始化了Admin Login Page对象,为什么会执行它对应模块下的用例呢? 这一点想不通,希望老师能看到并解答,十分感谢。
作者回复: 在 Pytest 中,可以使用不同的作用域来控制测试用例和夹具的生命周期。以下是 Pytest 支持的作用域: function: 每个测试用例和夹具都会被调用一次。 class: 每个测试类在运行测试用例之前都会被调用一次。每个测试类可以包含多个测试用例。 module: 每个测试模块在运行测试用例之前都会被调用一次。测试模块是指包含测试用例的 Python 模块。 session: 在整个测试会话期间,只会调用一次。测试会话是指执行所有测试用例的完整过程。 这些作用域的区别在于它们控制测试用例和夹具的生命周期。例如,如果将作用域设置为 "function",则每次运行测试用例时,都会创建新的夹具实例。如果将作用域设置为 "module",则测试用例和夹具在整个测试模块期间保持不变。 另外需要注意的是,如果在一个作用域中定义了一个夹具,它仍然可以在比它作用域更低的级别中使用。例如,如果在 "module" 作用域中定义了一个夹具,它仍然可以在 "function" 作用域中使用。但是,如果在一个作用域中定义了一个夹具,它不能在比它更高的级别中使用。例如,在 "function" 作用域中定义的夹具不能在 "module" 作用域中使用。
作者回复: 在 Pytest 中,如果一个测试函数 B 依赖于另外一个参数化的测试函数 A,且需要在每次执行 A 函数时都执行一次 B 函数,可以使用 Pytest 的 Fixture 模块来实现。 具体而言,可以定义一个 Fixture 函数,使用 `yield` 语句返回一个可迭代对象,每次迭代都执行 B 函数。然后在 A 函数中调用 Fixture 函数即可。示例如下: ``` import pytest @pytest.fixture(scope="function") def run_b(): # Fixture 函数,每次迭代都执行 B 函数 def _run_b(): print("B function is running...") yield _run_b @pytest.mark.parametrize("arg", [1, 2, 3]) def test_a(run_b, arg): # A 函数,每次迭代都调用 Fixture 函数 print("A function is running with arg:", arg) run_b() # 调用 Fixture 函数,每次迭代都执行 B 函数 ``` 在以上代码中,Fixture 函数 `run_b()` 每次迭代都会执行一次 B 函数。然后在参数化的测试函数 A 中,每次迭代都调用 Fixture 函数 `run_b()`,即可实现每次迭代都执行一次 B 函数的需求。 需要注意的是,为了确保 Fixture 函数在 A 函数之前执行,需要在 A 函数中添加 Fixture 函数名作为参数。此外,还需要将 Fixture 函数的作用域设置为 `function`,表示每个测试函数执行时都会执行 Fixture 函数。
作者回复: 把源码贴出来看看
作者回复: 在pytest中,标记依赖关系的方式确保了被依赖用例执行成功后,才会执行依赖用例。如果依赖用例的执行依赖于被依赖用例的状态,则可能存在以下情况: 被依赖用例未成功执行,导致依赖用例被跳过 依赖用例定义的范围scope不正确 您可以检查一下以下几个方面,看是否会影响用例执行顺序: 确保被依赖的登录测试用例的标记名称和依赖测试用例中的名称一致。如果不一致,则依赖用例无法找到被依赖用例,也就不会执行。 确保被依赖用例执行成功,没有抛出任何异常。如果被依赖用例执行失败,依赖用例会被跳过。 确保依赖用例的scope正确设置。scope的默认值为function,表示该用例是在每个测试函数之前执行的。如果依赖用例的scope设置为module,则会在依赖用例所在的模块之前执行。如果被依赖用例在依赖用例所在的模块之后定义,则依赖用例无法找到被依赖用例,也就无法执行。 另外,您也可以尝试使用--verbose选项运行pytest,查看pytest的详细输出,看是否有任何提示。
作者回复: 这里有一篇博客可以解释你的问题:https://www.cnblogs.com/Tester_Dolores/p/13931537.html
作者回复: 这里有一篇博客可以解释你的问题:https://www.cnblogs.com/Tester_Dolores/p/13931537.html
作者回复: 设置断点看看怎么执行的
作者回复: 看看安装是否正确 设置断点调试一下