其他测试框架 使用 pytest 测试框架的参数化时,想使用 flask 的 api 能力进行每次倒入参数数据,但是 pytest 一直都是第一次的测试数据

小白啊 · 2021年10月21日 · 最后由 小白啊 回复于 2021年10月25日 · 2302 次阅读

想用 pytest 测试框架做一个基础服务,用例数据每次通过外部接口调用的同时更换参数化数据

pytest 测试代码如下:

class TestCase:

    @user1ize("data", param_list())
    def test_caseData(self, data):
        """
        :param data:
        :return:
        """

        print(data)

flask 代码如下:

@app.route("/upload/data", methods=['POST'])
def server():
    file = request.files['file']
    file_path = os.path.join(path, secure_filename(file.filename))
    file.save(file_path)   
    pytest.main(['-s'])
    return 200

每次上传的数据怎么和 pytest 参数化关联起来了????

测试发现,pytest 第一次参数数据后,继续运行,难道就不接受新的参数了吗,必须重新启动 flask api 服务才行

共收到 8 条回复 时间 点赞

来个大佬回复下啊

@user1ize("data", param_list) 里面的值是静态的,你传了一次就没办法改变了

只能通过接口的方式实现了

@xxaq 就是想弄成动态的,但是用接口的方式改变参数值后,pytest 并没有重新收集用例;
我是将请求的参数文件保存后,用一个方法会读取这个文件组装成用例数据,放到@user1ize("data", param_list) 里面,其实 param_list 是个函数调用结果

问题就在于 继续调用上传数据接口后,param_list 这个值没变,怎么才能转换成动态的呢???大佬们

使用 pytest_collection_modifyitems 这个钩子发现也替换不了

不要用 user1ize 方法了,直接走参数 get,pos 方法了,直接读取结构文件,函数内部调用

@xxaq 你的意思是不用 pytest 参数化框架吗?主要是想用 pytest 的自动组装用例功能

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册