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 次
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