gpt4 book ai didi

Python/Django - 是否有类似于 Rails 的 assert_difference 的断言?

转载 作者:行者123 更新时间:2023-12-04 04:47:54 27 4
gpt4 key购买 nike

Rails 有一个断言,可以在执行块后测试值的差异。来自 here :

assert_difference 'Article.count', 1 do
post :create, article: {...}
end

此断言将执行创建后命令,并测试 Article.count执行完块后增加了 1。

Python 或 Django 中是否有类似的断言?如果不是,最有效的实现是存储数字,然后再获取它吗?

最佳答案

Explicit is better than Implicit



这基本上做同样的事情。
pre_count = Article.objects.count()

# Your Logic

post_count = Article.objects.count()

self.assertEqual(post_count-pre_count, 1)

,对于额外的 ruby 调味料,
from django.utils.decorators import method_decorator
from contextlib import contextmanager

def ExtendedTestCase(TestCase):

@method_decorator(context_manager)
def assertDifference(self, func, diff, message=None):
" A Context Manager that performs an assert. "
old_value = func()
yield # `with` statement runs here. Roughly equivalent to ruby's blocks
new_value = func()
self.assertEqual(new_value-old_value, diff, message)

def ArticleTestCase(ExtendedTestCase):

def test_article_creation(self):
" Test that new articles can be created "
with self.assertDifference(Article.count, 1):
self.client.post("/article/new/", {
"title": "My First Django Article",
"content": "Boring Technical Content",
})

关于Python/Django - 是否有类似于 Rails 的 assert_difference 的断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17910007/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com