8个版本

0.3.5 2024年6月28日
0.3.4 2024年5月27日
0.2.0 2024年5月24日
0.1.0 2024年5月23日

#143 in FFI

每月下载 23

MIT 许可证

30KB
389

pyo3-testing: 一个crate,使Rust中测试pyo3包装函数变得简单

Pyo3-testing设计用来节省不断构建和安装您包装的扩展模块,以便在Python中运行集成测试的需要。

它提供了一个测试属性 #[pyo3test],允许您将测试缩短为

#[pyo3test]
#[pyo3import(py_adders: from adders import addone)]
fn test_pyo3test_simple_case() {
    let result: isize = addone!(1);
    assert_eq!(result, 2);
}

没有 pyo3-testing,这个测试可以运行到超过20行代码,并可能因为Python解释器预初始化问题而随机失败。

它还提供了一个 with_py_raises! 宏,模仿pytest的 with raises 上下文管理器,用于测试预期的异常

# use pyo3_testing::{pyo3test, with_py_raises};
#[pyo3test]
#[allow(unused_macros)]
#[pyo3import(py_adders: from adders import addone)]
fn test_raises() {
    with_py_raises!(PyTypeError, { addone.call1(("4",)) });
}

有关使用此crate的指南,以及大量有关为Python开发Rust扩展的技巧,请参阅: 结合rust & python - 实例

crate的技术文档可在 docs.rs 查找

认可

如果没有 pyo3 做出的出色工作,这个crate将无法实现或成为必需品。

反馈、想法和贡献

...通过 MusicalNinjas/pyo3-testing 非常欢迎

依赖项

~3–11MB
~130K SLoC