如何在计算器程序中应用断言方法?
How can I apply method assert in a calculator program?
我做了一个计算器。现在我必须使计算器遵循 类 和功能,以便稍后我可以对其应用 assert 方法。这是类之后的计算器程序,功能正常,但不会应用assert方法。
不知道是计算器程序出错了,还是我看不懂
谢谢!
class Calculator:
"""Create your own calculator."""
def __init__(self, num1, num2):
"""Ask the numbers with which we are going to operate."""
self.num1 = int(num1)
self.num2 = int(num2)
def sums(self):
"""Perform the sum operation."""
summ = self.num1 + self.num2
print("The result of the sum is: ", sum)
return sum
def subtracts(self):
"""Perform the subtract operation."""
sub = self.num1 - self.num2
print("The result of the subtraction is: ", subtract)
return subtract
def multiply(self):
"""Perform the multiply operation."""
mult = self.num1 * self.num2
print("The result of the multiplication is: ", mult)
return mult
def divide(self):
"""Perform the divide operation."""
div = self.num1 / self.num2
print("The result of the division is: ", div)
return div
----------------------------
import unittest
from calculator_poo import Calculator
class TestCalculadora(unittest.TestCase):
"""Tests for 'calculator_poo.py'"""
def test_multiply(self):
"""works?"""
fx = multiply()
self.assertEqual(f("3*5')
unittest.main()
我认为你应该这样做
class TestCalculadora(unittest.TestCase):
"""Tests for 'calculator_poo.py'"""
def test_multiply(self):
"""works?"""
fx = Calculator(3,5).multiply()
self.assertEqual(fx, 3*5)
给出第二个答案,因为前一个没有详细说明代码的作用
您给出的测试class 的声明看起来不错,但是代码中 assertEqual 的使用不正确。
assertEqual(val1, val2) 需要 2 个值/对象并测试它们是否相等。还有其他断言函数可以检查您想要的任何内容(有关可能断言的详细列表,请参阅 https://docs.python.org/3/library/unittest.html#test-cases)。
为了使用 assertEqual(),您首先必须创建一个计算器对象,在该对象上执行测试(这是因为您的计算器 class 使用 class 变量 num1 和 num2 ).
然后,您可以将该计算器的乘法函数的结果与预期输出进行比较:
def test_multiply(self):
self.assertEqual(Calculator(3,5).multiply(), 15)
cal = Calculator(3, 5)
self.assertEqual(cal.multiply(), 15)
请注意,您可以内联初始化计算器对象并直接使用它(第一行)或在本地范围内显式声明它(第 2 和 3 行)。后者在这里没有实际用处,因为您的计算器绑定到它初始化时使用的数字。
您现在可以为计算器的其他功能添加更多测试功能class。
回到 sum
关键字:您还需要将 return 和打印语句更新为新变量名称。
我做了一个计算器。现在我必须使计算器遵循 类 和功能,以便稍后我可以对其应用 assert 方法。这是类之后的计算器程序,功能正常,但不会应用assert方法。
不知道是计算器程序出错了,还是我看不懂
谢谢!
class Calculator:
"""Create your own calculator."""
def __init__(self, num1, num2):
"""Ask the numbers with which we are going to operate."""
self.num1 = int(num1)
self.num2 = int(num2)
def sums(self):
"""Perform the sum operation."""
summ = self.num1 + self.num2
print("The result of the sum is: ", sum)
return sum
def subtracts(self):
"""Perform the subtract operation."""
sub = self.num1 - self.num2
print("The result of the subtraction is: ", subtract)
return subtract
def multiply(self):
"""Perform the multiply operation."""
mult = self.num1 * self.num2
print("The result of the multiplication is: ", mult)
return mult
def divide(self):
"""Perform the divide operation."""
div = self.num1 / self.num2
print("The result of the division is: ", div)
return div
----------------------------
import unittest
from calculator_poo import Calculator
class TestCalculadora(unittest.TestCase):
"""Tests for 'calculator_poo.py'"""
def test_multiply(self):
"""works?"""
fx = multiply()
self.assertEqual(f("3*5')
unittest.main()
我认为你应该这样做
class TestCalculadora(unittest.TestCase):
"""Tests for 'calculator_poo.py'"""
def test_multiply(self):
"""works?"""
fx = Calculator(3,5).multiply()
self.assertEqual(fx, 3*5)
给出第二个答案,因为前一个没有详细说明代码的作用
您给出的测试class 的声明看起来不错,但是代码中 assertEqual 的使用不正确。 assertEqual(val1, val2) 需要 2 个值/对象并测试它们是否相等。还有其他断言函数可以检查您想要的任何内容(有关可能断言的详细列表,请参阅 https://docs.python.org/3/library/unittest.html#test-cases)。
为了使用 assertEqual(),您首先必须创建一个计算器对象,在该对象上执行测试(这是因为您的计算器 class 使用 class 变量 num1 和 num2 ). 然后,您可以将该计算器的乘法函数的结果与预期输出进行比较:
def test_multiply(self):
self.assertEqual(Calculator(3,5).multiply(), 15)
cal = Calculator(3, 5)
self.assertEqual(cal.multiply(), 15)
请注意,您可以内联初始化计算器对象并直接使用它(第一行)或在本地范围内显式声明它(第 2 和 3 行)。后者在这里没有实际用处,因为您的计算器绑定到它初始化时使用的数字。
您现在可以为计算器的其他功能添加更多测试功能class。
回到 sum
关键字:您还需要将 return 和打印语句更新为新变量名称。