我正试图在Python中找到类似于Qunit断言的方法。在Qunit中使用断言时,message参数以非常具有描述性的方式使用。
test( "test", function() {
ok( fn([])==None, "Function should return 0 if no users" );
ok( fn(["Test User"])==1, "Function should return 1 is users supplied" );
});
另一方面,Python的unittest模块使用message参数是一个更负面的上下文。这些仅在断言失败时显示。
class TestSequenceFunctions(unittest.TestCase):
def test_choice(self):
seq = range(10)
element = random.choice(seq)
self.assertTrue(element in seq, msg="Element not found in sequence")
Qunit的最终结果是有更清晰的成绩单可以与规范文件进行比较。
我意识到在Python中,也许可以通过写作来实现类似的方法
def test_choice_ensure_element_exists_in_sequence(self):
虽然不一样。输出没有以很好的方式呈现,然后测试生命周期为您要使用的每个标签执行设置和拆卸,这不一定是您想要的。
可能有一个库采用这种方法,所以也许这个问题已经解决了。 python unittest库或pytest似乎都不会以这种方式工作。
答案 0 :(得分:0)
你的问题可能很简单,就是不了解单元测试库。我发现能够写
self.assertIn('s', (1,3,4))
非常简短,富有表现力和可读性。
如果在测试用例上使用正确的断言方法,那么很少需要添加自己的消息。 assertIn
本身具有完全合理的输出:
AssertionError: 's' not found in (1, 3, 4)
所以不要写大量的评论/消息代码。我依赖于命名良好的断言和有用的默认消息。如果还没有提供一个名为断言和有用的错误消息,那么我扩展测试用例并添加我自己的。
self.assert_user_is_administrator(user)
非常易读且如果失败我会在一个位置提供一条好消息。