python - Unittest:新数字对的新测试用例
问题描述
我从 [https://www.codewars.com/kata/59ccf051dcc4050f7800008f/python][1] 解决了一项任务
这是我的代码:
import math
def buddy(start, limit):
for n in range(start, limit + 1):
m = s(n)
if m > n and n == s(m):
return [n, m]
return None
def s(n):
s = 0
for i in range(2, round(n ** 0.5)):
if n % i == 0:
s += i
s += n // i
return s
对于 buddy(48, 50)),输出为:[48, 75]
对于 buddy(2177, 4357)),输出为:无
现在我想为我的代码编写一个单元测试。
这是我的示例:
import unittest
from buddy_pair import buddy
class MyTestCase(unittest.TestCase):
def test_buddy_pair(self):
pair = buddy(48, 50)
self.assertEqual(pair, [48, 75])
def test_buddy_None(self):
pair = buddy(2177, 4357)
self.assertEqual(pair, None)
if __name__ == '__main__':
unittest.main()
现在我有一个问题。我是否进行了正确的测试,我是否应该总是为新的配对号码测试编写一个新函数?如果您也建议进行一些测试重构,也将不胜感激。
解决方案
我认为您应该单独编写它们,因为您可以根据需要单独运行或完全运行。
如果您将它们写在一个函数中,那么当您只想测试其中一个结果时,您将不得不调整代码。代码中有 1 个错误。
应该
def test_buddy_pair(self):
pair = buddy(48, 50)
self.assertEqual([48, 75], pair)
期望应该是第一个参数。
推荐阅读
- ios - 使用框架!在 Podfile 中导致找不到“React/RCTBridgeDelegate.h”
- flutter - SingleChildScrollView 颤动中的 Streambuilder 错误
- elasticsearch - 根据指示状态变化的事件绘制状态图
- swift - SwiftUI macOS 悬停在按钮更改光标鼠标上
- python - 异常值:join() 参数必须是 str、bytes 或 os.PathLike 对象,而不是“函数”
- airflow - 错误:Gunicorn 大师在 120 秒内没有响应。关闭网络服务器。Airflow-Webserver 服务无法启动
- swift - 使用委托和协议模式发送数据时意外发现 nil
- openlayers - 在 Openlayers 的当前视口之外请求和缓存 WMTS/平铺的 WMS 切片
- javascript - 为输入的每餐创建一个带有复选框的表单
- c# - 更改用户环境变量 WIX 自定义操作 C#