• pytest文档22-fixture详细介绍-作为参数传入,error和failed区别


    前言

    fixture是pytest的核心功能,也是亮点功能,熟练掌握fixture的使用方法,pytest用起来才会得心应手!

    fixture简介

    fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进:

    • 有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。
    • 按模块化的方式实现,每个fixture都可以互相调用。
    • fixture的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture和测试用例进行参数化,或者跨函数 function、类class、模块module或整个测试会话sessio范围。

    fixture作为参数传入

    定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要用test_开头,跟用例区分开。用例才是test_开头的命名。

    fixture是可以有返回值的,如果没return默认返回None。用例调用fixture的返回值,直接就是把fixture的函数名称当成变量名称,如下案例

    # test_fixture1.py
    import pytest
    
    @pytest.fixture()
    def user():
        print("获取用户名")
        a = "yoyo"
        return a
    
    def test_1(user):
        assert user == "yoyo"
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_fixture1.py"])

    运行结果

    ============================= test session starts =============================
    platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
    rootdir: D:YOYOfixt, inifile:
    plugins: rerunfailures-4.1, metadata-1.7.0, html-1.19.0, allure-adaptor-1.7.10
    collected 1 item
    
    test_fixture1.py 获取用户名
    .
    
    ========================== 1 passed in 0.20 seconds ===========================

    error和failed区别

    测试结果一般有三种:passed、failed、error。(skip的用例除外)

    如果在test_用例里面断言失败,那就是failed

    # test_fixture2.py
    import pytest
    
    @pytest.fixture()
    def user():
        print("获取用户名")
        a = "yoyo"
        return a
    
    def test_1(user):
        assert user == "yoyo111"  # 用例失败就是failed
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_fixture2.py"])

    如果在fixture里面断言失败了,那就是error

    test_fixture3.py
    import pytest
    
    @pytest.fixture()
    def user():
        print("获取用户名")
        a = "yoyo"
        assert a == "yoyo123"  # fixture失败就是error
        return a
    
    def test_1(user):
        assert user == "yoyo"
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_fixture3.py"])

    还有一种情况也会出现error,那就是自己代码写的有问题,自己本身代码报错,那就是error了。

    ---------------------------------pytest结合selenium自动化完整版-------------------------

    全书购买地址 https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b

    作者:上海-悠悠 QQ交流群:874033608

    也可以关注下我的个人公众号:yoyoketang

    1070438-20181009214319480-1673365725.jpg

  • 相关阅读:
    zoj 1610(明天做)
    在C#中ParameterizedThreadStart和ThreadStart区别
    datagridview显示行号
    不允许对64位应用程序进行修改”的解决方法
    SQL查询表和存储过程创建修改日期
    推荐一个代码自动完成的工具AutoCode
    .net中的认证(authentication)与授权(authorization)
    SQL语句使用总结(二)
    C#/WinForm给控件加入hint文字
    sql server 2008 express 安装的时提示“重启计算机失败"
  • 原文地址:https://www.cnblogs.com/twodog/p/12135806.html
Copyright © 2020-2023  润新知