Python接口自动化测试之pytest:(六)内置固件—tmpdir、tmpdir_factory

在Pytest框架中存在一些内置固件,不需要单独编写代码,可以直接使用。不仅能大幅简化测试工作,还能提高测试效率。

使用命令pytest --fixtures或者pytest --funcargs可以查看所有可用的fixture,包括内置的、插件中的以及当前项目定义的。

下面介绍一些常用固件:Tmpdir、tmpdir_factory、cache。

一、Tmpdir和tmpdir_factory固件

Tmpdir和tmpdir_factory用于临时文件和目录的管理,在测试开始前创建临时文件目录,并且在测试结束后销毁,适用于在测试过程中需要创建一个临时文件,并且对文件进行读写操作的场景。

tmpdir的作用范围是函数级别;tmpdir_factory的作用域是会话级别。

1、tmpdir的使用

看下面一个示例:测试方法在执行过程中创建临时目录和文件,在文件中写入数据,断言数据是否存在于临时文件中。

import pytest

def test_tmpdir(tmpdir):
    tmp_dir = tmpdir.mkdir('testdir') #创建一个临时目录
    tmp_file = tmp_dir.join('tmpfile.txt') #在临时目录下创建一个临时文件
    tmp_file.write('这是一个临时文件') #在临时文件中写入数据
    assert tmp_file.read() == '这是一个临时文件'

if __name__ == '__main__':
    pytest.main(['-s', '-v', 'test_fixture_tmpdir.py'])

运行结果如下:可见断言成功了,临时目录和文件创建成功,也成功对文件进行了读写操作。

2、tmpdir_factory的使用

看下面的示例:自定义一个fixture方法,调用tmpdir_factory创建临时文件,并在其他测试方法可以读取临时文件。

import pytest

@pytest.fixture(scope='module')
def test_tempdir_fixture(tmpdir_factory):
    tmp_dir = tmpdir_factory.mktemp('testdir') #创建一个临时目录
    tmp_file = tmp_dir.join('testfile.txt') #创建一个临时文件
    tmp_file.write('这是一个临时文件') #在临时文件中写入数据
    return tmp_file #返回临时文件

def test_tmp1(test_tempdir_fixture):
    with test_tempdir_fixture.open() as f:
        assert f.read() == '这是一个临时文件'

def test_tmp2(test_tempdir_fixture):
    assert '这是一个临时文件' in test_tempdir_fixture.read()

运行结果如下:两个测试方法都运行成功了,可见tmpdir_factory在module级别可以创建目录和文件,并且可以对文件进行读写。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鸣宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值