Loading

pytest-fixture之conftest.py

conftest.py 配置可以实现数据共享,不需要import就可以自动找到一些配置.

conftest.py需要与运行的用例在同一个包下面,并且要有init.py文件

1.fixture(scope="funtion",params=None,autouse=False,ids=None,name=None)详解

1.1.scope

  使用范围: session>module>class>function

  相当于为用例设置前置条件,分为全局,模块级,类级,函数级.

    ="module"  实现多个.py跨文件共享前置

      如果一个.py里面有多个用例,都调用了此fixture,那么该fixture只在该.py里所有用例开始前执行一次.

    ="session"  以实现多个.py文件跨文件使用一个session完成多个用例

    ="function"  针对函数有效

      使用场景:用例1需要登陆,用例2不需要登陆

      # 不带参数,默认为function

      @pytest.fixture()

      def login():

        print("输入账号密码登陆")

        login_role()  #登陆

      在测试用例中使用:

        def test_case1(login):

          print("需要登陆的用例")

        def test_case2():

          print("不需要登陆的用例")

    ="class"

      如果一个class里面有多个用例,都调用了此fixture,那么该fixture只在该class里所有用例开始前执行一次.

1.2 autouse

  默认为False,当为True时,不需要每个用例都去传参!

 

2.yield

  相当于teardown操作

        使用方式一:

    # 关闭浏览器
    @pytest.fixture(scope="session", autouse=True)
    def browser_close():
     yield driver
     driver.quit()
     print("test end!")

   使用方式二:

1 @pytest.fixture(scope="function")
2 def set_business_domain_url(req):
3     print('在调用此函数的测试用例执行前 do something,相当于setup fuction')
4 yield 5 print('在调用此函数的测试用例执行完后 so something,相当于teardown function')

 

 

3.html测试报告详解

3.1 钩子函数

  定义: 就是把我们实现的hook函数在某一时刻挂接到目标挂载点上.相当于 监听.可以这么理解.

  钩子函数 不允许 抛出异常!

 

3.2 填写测试环境

def pytest_configure(config):
config._metadata["项目名称"] = '111'
config._metadata['接口地址'] = api['api_url']
config._metadata['测试账号'] = testdata['user']

 

posted @ 2019-11-29 02:45  Tester-Dolores  阅读(61)  评论(0编辑  收藏  举报