pytest-fixture之conftest.py

简介python

fixture优点

fixture相对于setup和teardown的优点session

 一、命名方式灵活,不局限于setup和teardown这几个命名
二、contest.py配置能够实现数据共享,不须要import就能自动寻找一些配置
三、scope = "module" 能够实现多个 .py跨文件共享前置,每个.py文件调用一次
四、scope = "session" 能够实现多个.py文件使用一个session来完成多个用例

fixture(scope ="function", params=None, autouse=False, ids=None, name=None)
    """
    使用装饰器标记fixture的功能,fixture功能的名称能够在之后使用
     引用它会在运行测试以前调用它:test模块或类可使用pytest.mark.usefixtures(fixturename标记。
     测试功能能够直接使用fixture名称做为输入参数,在这种状况下,夹具实例从fixture返回功能将被注入。
    """
    :scope 有四个参数:function(默认), class, moudle, session
    :params 一个可选的参数列表,他将致使多个参数调用fixture功能和全部测试使用它
    :autouse  若是True,则全部测试激活fixtrue func能够看到他
    :ids 每一个字符串id列表,每一个字符穿对应于params,这样他们就是测试id的一部分,若是没有提供id他们将从params自动生成
    :name fixture名称

  代码笔记测试

conftest.py配置

问题:若是多个py文件都须要调用登陆功能,因此不须要把功能写在用例中,须要单独写配置文件,操做

conftest.py配置
:conftest.py配置脚本名称是固定,不能修更名称
:conftest.py与运行的用例要在同一个pakage下,而且有__init__.py文件
:不须要导入conftest.py,pytest用例会自动查找

  

conftest.py
    import pytest

    @pytest.fixture()
    def login():
        print("输入帐号,密码先登陆")

test_fix1.py
    import pytest
    
    def test_s1(login):
        print("用例1:登陆以后其它动做111")
    
    def test_s2():  # 不传login
        print("用例2:不须要登陆,操做222")
    
    def test_s3(login):
        print("用例3:登陆以后其它动做333")
    
    if __name__ == "__main__":
        pytest.main(["-s", "test_fix1.py"])
相关文章
相关标签/搜索