小编Tim*_*ott的帖子

为 serde_json 反序列化制作我自己的错误

我正在尝试使用 serde_json 将具有预先存在的格式的 JSON 文件反序列化为我自己的 Rust 文件。

我想通过为该类实现一个反序列化器来做到这一点。

我的问题是 JSON 文件可能格式错误,但raw_json_result仍可以正常解码,但生成的数据结构本身格式错误。在这种情况下,我想返回一个错误。

这里形成有效错误对象的机制是什么?我想我想要一条Err(something_valid)线——我只是不知道如何制作something_valid

impl<'de> Deserialize<'de> for MyClass {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where
        D: Deserializer<'de>,
    {
        let raw_json_result = MyAliasedClassFromJson::deserialize(deserializer)?;
        MyClass::from_cal_json::<D>(cal_json)
    }
}
Run Code Online (Sandbox Code Playgroud)

rust

5
推荐指数
1
解决办法
4468
查看次数

Argparse 和 unittest.main()

我刚刚在单元测试中添加了一个图形实用程序——基本上,测试的全自动版本只是进行数值比较,但我希望人们能够要求绘图。

如果我使用我的新参数,仅仅使用 argparseunittest.main()就会令人窒息。我目前正在做的是检查该参数,然后从中删除它sys.argv似乎是错误的

有没有更好的方法给这只猫剥皮?

  • 一种告诉 argparse 使用 sys.argv 参数的方法。可能还是错的,但不是我做的,所以没关系。
  • 一种告诉 argparse 吐出 sys.argv 版本并删除所有“使用的参数”的方法 - 这会很酷,因为它看起来unittest.main()会采用备用 argv。
  • 一种告诉unittest.main()忽略争论的方法。
if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description='Test correction'
    )
    parser.add_argument(
        '--plot-results',
        help='Plot results of cal test',
        action='store_true'
    )
    args = parser.parse_args()

    if args.plot_results:
        while '--plot-results' in sys.argv:
            sys.argv.remove('--plot-results')

    unittest.main()
Run Code Online (Sandbox Code Playgroud)

python argparse python-unittest

2
推荐指数
1
解决办法
229
查看次数

标签 统计

argparse ×1

python ×1

python-unittest ×1

rust ×1