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. 方便的和持续集成工具集成
浙公网安备 33010602011771号