pytest测试框架实战二

allure2

fixture

https://docs.pytest.org/en/stable/fixture.html

参数化与数据驱动

https://pyyaml.org/wiki/PyYAMLDocumentation

  1. @pytest.mark.usefixtures() 怎么使用???
  2. 定义在conftest.py文件中被@pytest.fixture(scoop=‘session’)修饰的公共方法a, 在执行测试时, 测试方法传入a和不传入a有什么区别??
  3. 定义setup_class方法必须要加上@classmethod 吗?
  4. @pytest.fixture(scope=‘xxx’) 和 setup/teardown 有什么区别? fixture方法必须要使用装饰器@pytest.mark.usefixtures(name)调用吗?

老师,问一下,pytest order -1为什么会在最后执行?
-1表示倒数第一?

class TestPytest(object):

    @pytest.mark.run(order=-1)
    def test_two(self):
        print("test_two")

    @pytest.mark.run(order=3)
    def test_one(self):
        print("test_one")

    @pytest.mark.run(order=1)
    def test_three(self):
        print("test_three")

根据order的大小排序, -1的确是最小

  1. fixture conftest的用法,用类的继承不是也可以实现吗?

  2. PageObject到底想解决一个什么样的问题?方便代码维护吗?主要用在什么样的场景使用?看录播课有点模糊。

如果不想在方法中显式的引用fixture,就用这个去修饰类。这样单个方法就不用重复的写fixture的引入了。

@pytest.fixture(scope=‘session’, autouse=True) 不管是否传入,session级别都会优先执行
@pytest.fixture(scope=‘session’) 不用就不会执行,如果用了就会初始化,在当前session中只初始化一次。初始化的阶段是在首次被引用的用例中。

实例方法和类静态方法都可以,pytest支持两种方式,平时可以不用加。参考项目的演练代码。

这是两套体系,都是支持的。fixture可以实现传统setup/teardown的所有功能,而且还有更多强大的用法。不过一般用不到这么复杂,所以能用setup就用,如果复杂,就上fixture

不用的,直播中已经演示了,同时也参考第一个问题的回答。

可以,但是fixture可以复用,不受限于类的继承体系,所以更灵活。方便制作插件。

会有专门讲page object的课程和实战,到时候就知道了。应该很快就到了。

这个是没有作业吗?

https://github.com/zsjlu/hogwarts_robot/tree/master/homework/pytest_learn