json 在pytest中存储自动化测试中的大负载的最佳选择是什么

rjjhvcjd  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(211)

我在存储用于测试API的大负载方面遇到了问题。我找不到任何合理的方法来存储它们和覆盖值。有效载荷有200-300行。
在这些有效负载中,有些值是相同的(比如一个有效负载中有5-7次),有些是恒定的,有些我必须在每次测试运行时更改。
目前,我有payloads.py文件,其中包含以下变量

scenario_1={
"request1":{200-300 lines payload},
"request2":{200-300 lines payload}

scenario_2={
"request1":{200-300 lines payload},
"request2":{200-300 lines payload},
"request3":{200-300 lines payload}
etc

然后我有这样的函数:

def find_paths_with_value_and_replace(self, json, value_to_replace, replace_with):
        if isinstance(json, dict):
            for key, val in json.items():
                if val == value_to_replace:
                    json[key] = replace_with
                elif isinstance(val, (dict, list)):
                    self.find_paths_with_value_and_replace(val, value_to_replace, replace_with)
        elif isinstance(json, list):
            for item in json:
                self.find_paths_with_value_and_replace(item, value_to_replace, replace_with)
        return json

然后在test中,我有prepare_test_data,其中我有像{operation_id}(在www.example.com中相同的名称)这样的值要替换payloads.py,并用faker生成的id填充它们,并返回准备好的json进行测试。
我敢打赌,有一个更好的方法来做到这一点,更容易,但我找不到任何合理的如何存储这些有效载荷和改变一些键的值。

2hh7jdfx

2hh7jdfx1#

我最终在repo中拥有了模板json文件,然后编辑了我必须编辑的prepare方法中的所有键,并且没有使用该函数。
prepare方法看起来像这样:

def prepare_something(val1,val2,val3):
    path = os.path.join(str(Path(__file__).parent), 'payloads/something.json')
    payload = helper.load_file_as_json(path))
    payload['some_key'][0]['some_ke2y'] = val1
    payload["some_key1"]["some_key2"] = val2
    payload['some_key2'] = val3
    payload['some_key3'] = helper.datetime_now('iso')
    payload["some_key4"]["some_key2"] = val1
    payload['some_key'][0]['some_key66'][0]['some_key']['some_key'] = val1
    payload['some_key'][0]['some_key66'][0]['some_key']['some_key'] = val1
    return payload

相关问题