如何使用Python中的Unittest断言整数在范围内?

时间:2020-02-19 08:04:54

标签: python python-unittest

我有一个文件可以验证标签

#configmanager.py

class FunctionNode(object):
    def __validate_func_label(self, func_label):
        pattern = re.compile('^fn[1-9][0-9]{0,1}$')
        if not pattern.match(func_label):
            raise Exception(
                f"Invalid value {func_label} for function label in function config.")

,我必须使用单元测试为它编写一个测试用例。测试用例将检查用户输入的fn是否在1到99之间,它将通过。否则,如果fn超出范围,例如fn0fn100,则它将失败。我写了一个TestClass

#test__validate_func_label.py

import unittest
from configmanager import FunctionNode

class TestValidateFuncLabel(unittest.TestCase):
    def setUp(self):
        pass

    def test_fn_within_range(self):
        for i in range(1,99):
            self.assertEqual(fn(i),output[i])

if __name__ == "__main__":
    unittest.main()

但是我觉得我走错了路。 我有什么办法可以断定fn的范围是1到99?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

self.assertTrue( 0<=y<=99)

其中y是您要检查的fn的值。

但是,我不明白您的问题与代码之间的关系。在您的代码中,您断言fn(i)具有特定值(取自名为output的列表,该列表未在其他地方定义),其中i的取值范围是1到98。

但是在您的问题中,您要求断言一个值介于这些数字之间。

答案 1 :(得分:0)

另一个解决方案是:

https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertIn

self.assertIn(fn, range(1, 100))
相关问题