测试人社区

两个用例有依赖,demo1用例执行完生成数据写入到文件中,demo2用例再获取这个文件的数据做参数化,有什么好的方法?

demo1用例

import pytest
import yaml


class TestDemo1:

    @pytest.mark.dependency(name="demo1")
    @pytest.mark.test
    def test_demo(self):
        print("demo1111111111")
        with open("demo.yaml","w") as fo:
            content = "123"
            yaml.dump(content,fo)

demo2用例

import pytest
import yaml


class TestDemo2:

    @pytest.mark.dependency(name="demo2", depends=["demo1"])
    @pytest.mark.parametrize("demo",yaml.safe_load(open("./demo.yaml")))
    @pytest.mark.test
    def test_demo(self, demo):
        print("demo2222222222222222")
        print(demo)

两个用例一起执行pytest -s -m test会报错,怎样可以对demo2用例做参数化?

1.我之前是用
@pytest.mark.usefixtures(“before”)来获取上一次依赖的返回值
2. 不过你可以用下httprunner框架,里面有很多自定义变量,很满足上游下游的依赖关系

这个报错似乎是test_demo2.py的第7行读取时没有找到demo.yaml文件。
自动化用例几大规则
1、写自动化测试用例之前必须要有接口功能测试用例;
2、用例之间不要有依赖关系;
3、每一条测试用例可以重复执行;
真的要做接口数据依赖可以在yaml文件里自行造些测试数据,作为入参引入到参数化里。

嗯,这个报错我知道……
目前用例是必须有依赖,那么demo2应该怎么用参数化呢?
还是只能分步执行?

可以把依赖的用例作为fixture,拿到返回值传入被依赖里