import allure import pytest from utils.logs import logs from pom.add_personal_data import Personal_data_method from setting import DATA_ROOT_PATH from utils.reader import YamlReader import time @allure.epic('Web测试') @allure.severity('blocker') @allure.feature('个人资料模块') class Test_add_personal_data: user_info = YamlReader(DATA_ROOT_PATH + 'personal_data_data.yaml').data def setup(self): pass def teardown(self): time.sleep(3) @allure.story('修改个人资料') @allure.title('测试数据') @pytest.mark.parametrize("arg", user_info) @logs def test01_add_personal_data(self,common_login,arg): page=Personal_data_method(common_login) res=page.text01_Personal_data_method(arg[0],arg[1],arg[2],arg[3],arg[4],arg[5]) assert res == arg[6] 报错:TypeError: Object of type Personal_data is not JSON serializable,怎么修改
时间: 2023-07-15 15:12:14 浏览: 141
pytest_allure_test.zip
这个错误通常是因为在测试代码中,试图将一个不支持 JSON 序列化的对象序列化为 JSON 字符串。根据你提供的测试代码,我猜测问题可能出在 @logs 装饰器中。
如果你在 @logs 装饰器中使用了 json.dumps() 或者类似的方法,那么可能会导致这个错误。你可以尝试修改 @logs 装饰器,确保不会将不支持 JSON 序列化的对象传递给它。
例如,可以将 @logs 装饰器修改成:
```python
def logs(func):
def wrapper(*args, **kwargs):
allure.attach(str(args[1:]), 'request_params')
result = func(*args, **kwargs)
allure.attach(str(result), 'response_result')
return result
return wrapper
```
这样的话,@logs 装饰器中就不会使用 json.dumps() 方法了,避免了可能的 JSON 序列化错误。
阅读全文