Pytest(十九)利用内置的cache 写入和读取缓存数据解决简单的数据依赖

2022-05-21 10:58:51 浏览数 (1)

系列分享

Pytest系列(一)初次了解

Pytest(二)执行规则以及编写执行多条用例

Pytest(三)Pytest执行命令

Pytest(四)Pytest断言

Pytest(五)标记函数

Pytest(六)跳过测试

Pytest(七) pytest之参数化

Pytest(八) pytest Fixture(一)

Pytest(九) pytest Fixture(二)

Pytest(十) pytest Fixture(三)

Pytest(十一) pytest ini文件

Pytest(十二) Pytest产生测试报告

Pytest(十三)durations统计用例运行时间

Pytest(十四)用例执行顺序

Pytest(十五)重试机制

Pytest(十六)多进程并发执行

Pytest(十七)pytest增加log日志

Pytest(十八)setup和teardown

pytest测试用例之间的参数如何传递?

在前置操作中生成了一个数据id,在测试用例需要引用,或者用例执行完成后需要在后置操作中删除。

比如在用例A中产生的数据,在用例B中使用,这样的如何处理?

这些在用例执行过程中生成的数据可以用cache缓存来解决。

代码语言:javascript复制
cache 是一个可以在测试会话之间保持状态的缓存对象。
cache是Cache类的一个实例对象
mkdir 创建一个文件夹
set(key: str, value: object) 设置一个cache值
get(key: str, default) 得到key对应的值

那么如何使用呢?

代码语言:javascript复制
import pytest
@pytest.fixture()
def createid(cache):
    id = "leisi说测试"
    cache.set("id", id)
    yield id
def test_1(cache, createid):
    # 方式1:cache获取
    get_id = cache.get("id", None)
    print("获取到的id: {}".format(get_id))
    # 方式2:直接通过createid 获取返回值
    print("fixture 中返回: {}".format(createid))
    cache.set("data",123)
    cache.set("id",12)

def test_2(cache):
    get_id = cache.get("id", None)
    get_data = cache.get("data", None)
    print("获取到的id: {}".format(get_id))
    print("获取到的data: {}".format(get_data))

执行结果:

可以看到,如果执行的过程中,去更新了相同的字段,这个字段会保存最新的值。

执行完毕在目录下面.pytest_cache,

可以发现,里面有缓存的值。每个参数保存对应的文件中去。

在pytest命令中,也有对cache相关的命令。

代码语言:javascript复制
跟cache有关的命令参数

--last-failed, 如果run的时候跟这个参数只会运行上次失败的用例
--failed-first,如果run的时候跟这个参数会先运行上次失败的case,然后再run其余的case。
--cache-show,跟上个参数,会显示上次run的信息。
--cache-clear, 在run前先把之前的cache清除。

可以在实际的项目中,根据需要进行选择对应命令即可。

0 人点赞