目录
2.fixture可以在一个类、或者一个模块、或者整个session中被共享,加上范围即可
一、pytest中的fixture是什么
为可靠的和可重复执行的测试提供固定的基线(可以理解为测试的固定配置,使不同范围的测试都能够获得统一的配置),fixture提供了区别于传统单元测试(setup/teardown)风格的令人惊喜的功能,而且pytest做得更炫。
二、pytest中fixture的使用
1.fixture 可以作为一个函数的参数被调用
如上图, 这里的 test_ehlo函数,需要参数值smtp_connection,pytest就是找到并且调用这个用@pytest.fixture装饰的smtp_connection函数。
换句话讲,被装饰器装饰的函数或者方法,仍然可以被调用。步骤是这样的:
- pytest 找到test_ 开头的函数,于是找到了test_ehlo
- test_ehlo这个测试函数,需要一个参数smtp_connection,于是函数smtp_connection被找到
- smtp_connection被调用来创建一个实例
2.fixture可以在一个类、或者一个模块、或者整个session中被共享,加上范围即可
如上图,加入scope=“module”的参数,可以让fixture function在每次模块测试的时候只请求一次。这样不同的test function在同一个test module中接收到的 smtpfixture参数都是一样的。这里的smtp_connection,就可以在这个模块中,共享使用。类似的:
如果想在一个类中使用,那么@pytest.fixture(scope="class");
如果想在全部会话中使用,那么@pytest.fixture(scope="session")。
3.fixture也可以单独存放
有的时候为了方便配置和访问,也可以将这样的fixture放到conftest.py文件中单独存放(注意ÿ