如何在Python单元测试中对变量内容进行多值断言验证?
如何在单元测试中对多个变体进行断言验证
你好~针对你需要对多个变体做断言验证的需求,这里有几种实用的实现方法,我给你详细说说:
方法一:使用循环结合subTest(unittest框架推荐)
这种方式的好处是,即便某个断言失败,其他测试用例仍会继续执行,能帮你一次性排查所有不符合预期的情况:
def test_multiple_domain_variants(self): # 把所有需要验证的预期值放到列表里 expected_domains = [b'wwe100.wwe.com', b'njpw100.njpw.org'] # 假设t是你要验证的变量,这里根据你的实际逻辑获取t的值 t = your_function_to_get_t() for expected in expected_domains: # 用subTest标记每个子测试,方便定位失败的具体用例 with self.subTest(expected_domain=expected): self.assertEqual(t, expected)
方法二:使用参数化测试(pytest框架更便捷)
如果你用的是pytest框架,参数化测试会让代码更简洁,并且每个参数会被当作独立的测试用例执行:
import pytest # 用parametrize装饰器传入所有预期值 @pytest.mark.parametrize("expected_domain", [b'wwe100.wwe.com', b'njpw100.njpw.org']) def test_multiple_domain_variants(expected_domain): # 获取待验证的变量t t = your_function_to_get_t() assert t == expected_domain
不推荐的方式:直接写多个断言
虽然可以直接依次写多个断言,但这种方式有个明显弊端:只要第一个断言失败,后面的断言就不会执行了,无法一次性看到所有问题:
def test_multiple_domain_variants(self): t = your_function_to_get_t() self.assertEqual(t, b'wwe100.wwe.com') self.assertEqual(t, b'njpw100.njpw.org')
内容的提问来源于stack exchange,提问作者Piduna
相关产品推荐
相关产品推荐

