gpt4 book ai didi

python - 编写扩展Python单元测试的自定义fail()方法

转载 作者:行者123 更新时间:2023-12-01 08:36:57 26 4
gpt4 key购买 nike

我有一个 Python unittest.TestCase 类的自定义特化,其中包括自动日志记录并提供自定义业务验证方法,以便在自定义测试场景的大量变体中使用。

我需要Python的unittest.TestCase.fail(...)的自定义版本,它可以使用与记录器相同的消息字符串,而不是格式化程序。

我想避免像这样定义消息字符串的两个版本:

def verifySomething(self, p_one:str, p_two:str):

if self.someClass.some_command():
self.test_result = TestResult.PASSED
message = "my custom message : %s and %s - %s"
self.logger.info(message, p_one, p_two, self.test_result)
else:
self.test_result = TestResult.FAILED
message = "my custom message : {} and {} - {}".format(p_one, p_two, self.test_result)
self.fail(message)

...而是做这样的事情,

def verifySomething(self, p_one:str, p_two:str):
message = "my custom message : %s and %s - %s"

if self.someClass.some_command():
self.test_result = TestResult.PASSED
self.logger.info(message, p_one, p_two, self.test_result)
else:
self.test_result = TestResult.FAILED
self.fail(message, p_one, p_two, self.test_result)

注意:这是一个简化的示例,为了简洁起见,我省略了前置条件和后置条件。

摘要:如何编写自定义失败函数来重写 Python 的 unittest.TestCase.fail(...) 来执行此操作?

最佳答案

我只需预先格式化消息:

def verifySomething(self, p_one:str, p_two:str):

if self.someClass.some_command():
self.test_result = TestResult.PASSED
display_func = self.logger.info
else:
self.test_result = TestResult.FAILED
display_func = self.fail

message = "my custom message: {} and {} - {}".format(p_one, p_two, self.test_result)
display_func(message)

您无需利用 self.logger.info 的功能来为您编写最终字符串。

关于python - 编写扩展Python单元测试的自定义fail()方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53667843/

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