pytest 学习
官方文档 pytest.org
测试文件格式 test_*.py or *_test.py
用例识别 Test*类,类中不能 有__init__,或者方法名是test*
pycharm 下用pytest运行


fixture 学习
1. setup、teardown可以实现在执行用例前或结束后加入一些操作,但这种都是针对整个脚本全局生效的
如果有以下场景:用例 1 需要先登录,用例 2 不需要登录,用例 3 需要先登录。很显然无法用 setup 和 teardown 来实现了fixture可以让我们自定义测试用例的前置条件
2
- 命名方式灵活,不局限于 setup 和teardown 这几个命名
- conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture
- scope="module" 可以实现多个.py 跨文件共享前置
- scope="session" 以实现多个.py 跨文件使用一个 session 来完成多个用例
3
@pytest.fixture(scope="function", params=None, autouse=False, ids=None, name=None)
def test():
print("fixture初始化的参数列表")
参数列表
- scope:可以理解成fixture的作用域,默认:function,还有class、module、package、session四个【常用】
- autouse:默认:False,需要用例手动调用该fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture
- name:默认:装饰器的名称,同一模块的fixture相互调用建议写个不同的name

4. 模块函数的执行顺序




yaml读取数据作为pytest的传参


yaml字典格式读入作为参数



以下是看pytest官网自学总结
官网https://docs.pytest.org/en/
1. pytest fixtures是unittest中 setup/teardown 改进版----标注的第一个疑问在下面有了解释---fixture cache的原因

左右两边是等价的,左边用了fixture,右边是 没用fixture时实现左边对应的功能



fixture 参数 autouse= True ,则此fixture作用 于每个test

fixture 参数scope, 配置scope可以使此装饰函数只执行一次
scope=function:则测试完毕,fixture销毁(默认值)
scope=calss:类最后的一个测试执行完毕销毁
scope=module, 模块的最后一个测试完毕之后销毁
scope =package 包
scope = session 会话
pytest一次只缓存一个fixture实例

fixture修饰的调用先后顺序,scope修饰的,不手动调用也是不会自动调用的--这句话不太确定




浙公网安备 33010602011771号