我在测试逻辑时遇到测试隔离问题,这涉及 SQLAlchemy 中的事务回滚。
型号:
class Product(db.Model):
id = db.Column(db.Integer, primary_key=True)
company = db.Column(db.Text)
subtype = db.Column(db.Text)
__table_args__ = (db.UniqueConstraint(company, subtype),)
Run Code Online (Sandbox Code Playgroud)
查看:
def create():
instance = Product(**request.json)
db.session.add(instance)
try:
db.session.commit()
except IntegrityError:
db.session.rollback()
return {"detail": "Product object already exists", "status": 406, "title": "Duplicate object"}, 406
return {"uri": f"/products/{instance.id}"}, 201
Run Code Online (Sandbox Code Playgroud)
测试:
DEFAULT_DATA = {"company": "Test", "subtype": "Sub"}
def test_create(client):
response = client.post("/products", json=DEFAULT_DATA)
assert response.status_code == 201
instance = Product.query.one()
assert response.json == {"uri": f"/products/{instance.id}"}
def test_create_duplicate(client):
response = …Run Code Online (Sandbox Code Playgroud) 对于u64小于 2 ^ 54 的数字,可以通过强制转换为 来完成,而不会造成太大的精度损失f64:
((6 as f64) % 1.5) < f64::EPSILON
Run Code Online (Sandbox Code Playgroud)
对于较大的数字,将会有显着的精度损失:
1u64 << 63 // 9223372036854775808
(1u64 << 63) as f64 // 9223372036854776000
Run Code Online (Sandbox Code Playgroud)
并且将检查不同数字的可分性。
Context : JSONSchema 的multipleOf关键字实现
问题:检查不符合尾数大小(53)的u64/i64数字的可整性的最有效方法是什么?f64f64::MANTISSA_DIGITS