pytest 学习

官方文档  pytest.org

测试文件格式 test_*.py  or  *_test.py

用例识别  Test*类,类中不能 有__init__,或者方法名是test*

 

 

pycharm  下用pytest运行

 

 

 

 

 

 

fixture 学习

1. setup、teardown可以实现在执行用例前或结束后加入一些操作,但这种都是针对整个脚本全局生效的

如果有以下场景:用例 1 需要先登录,用例 2 不需要登录,用例 3 需要先登录。很显然无法用 setup 和 teardown 来实现了fixture可以让我们自定义测试用例的前置条件

  • 命名方式灵活,不局限于 setup 和teardown 这几个命名
  • conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture
  • scope="module" 可以实现多个.py 跨文件共享前置
  • scope="session" 以实现多个.py 跨文件使用一个 session 来完成多个用例

@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修饰的,不手动调用也是不会自动调用的--这句话不太确定

 

 

 

 

 

 

 

 

 

posted @ 2021-08-10 21:00  sunshine100034  阅读(107)  评论(0)    收藏  举报