pytest_fixture的使用

1.标记工厂函数(给谁就用,不给就不用)

  装饰器@pytest.fixture() 修饰一个方法

  使用

    (1)脚本的参数列表中,增加fixture的名字即可

    (2)在脚本之上写一个装饰器@pytest.mark.usefixtures("before")  

    (3)@pytest.fixture(autouse=True)默认全部运行 优先级别大于setup

  作用域

    @pytest.fixture(autouse=True,scope=function")

    @pytest.fixture(autouse=True,scope="class")

    优先级  class级别中  setup_class>fxiture

        function级别中 fxiture> setup

  参数化

    @pytest.fixture(params=["1","2","3"])

    列表中有多少个元素,脚本就会执行多少次

    如果想要获取列表中的内容

      需要在fixture中添加一个request 参数通过request.param进行获取

      

 

  

  返回值

     在使用参数引用的时候,这个参数就是fixture函数的返回值

    如果想要使用之前提到的,参数化内容,直接当成返回值即可

  

  扩展

    如果脚本中使用参数化  也使用了fixture 会组合

    应用场景用户名有多个  密码也有多个符合和不符合的  依次遍历

 

  自定义参数

def pytest_addoption(parser):
"""
注册自定义参数 env到配置对象中
"""
parser.addoption("--env", action="store", default="uat", help="将命令行参数 ’--env' 添加到 pytest 配置中")


@pytest.fixture(scope="session")
def get_env(request):
"""从配置对象中读取自定义参数的值"""
env = request.config.getoption("--env")
print(env)
return env


@pytest.fixture(autouse=True)
def set_env(get_env):
"""将自定义参数的值写入全局配置文件"""
with open("./config/env.txt", "w", encoding="utf-8")as f:
f.write(get_env)

  allure报告生成

面试

pytest是什么 ,有什么特点?

  python 的一种单元测试框架,解决我们多个测试脚本一起执行的问题

  1. 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考
  2. 支持简单的单元测试和复杂的功能测试
  3. 支持参数化
  4. 执行测试过程中可以将某些测试跳过,或者对某些预期失败的 Case 标记成失败
  5. 支持重复执行失败的 Case
  6. 支持运行由 Nose,Unittest 编写的测试 Case
  7. 具有很多第三方插件,并且可以自定义扩展
  8. 方便的和持续集成工具集成

posted @ 2022-02-22 09:46  血染星辰  阅读(79)  评论(0)    收藏  举报