NextDate(年,月,日)是三个变量的函数。函数返回输入日期的下一个日期。 1.使用python语言撰写程序 ,使用python unitest执行测试用例
时间: 2024-03-05 22:50:51 浏览: 149
下面是使用Python编写的NextDate函数及其对应的测试用例(包括边界测试和一些常规测试)```
def NextDate(year, month, day):
# 判断输入的年份是否为闰年
leap_year = False
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
leap_year = True
else:
leap_year = True
# 判断输入的月份是否合法
if month < 1 or month > 12:
return "Invalid input: month should be between 1 and 12"
# 判断输入的日期是否合法
max_day = 31
if month == 4 or month == 6 or month == 9 or month == 11:
max_day = 30
elif month == 2:
if leap_year:
max_day = 29
else:
max_day = 28
if day < 1 or day > max_day:
return "Invalid input: day should be between 1 and " + str(max_day)
# 计算下一天的日期
if day < max_day:
day += 1
elif month < 12:
month += 1
day = 1
else:
year += 1
month = 1
day = 1
return str(year) + "-" + str(month).zfill(2) + "-" + str(day).zfill(2)
import unittest
class TestNextDate(unittest.TestCase):
def test_boundary(self):
self.assertEqual(NextDate(1, 1, 1), "1-01-02")
self.assertEqual(NextDate(1582, 10, 4), "1582-10-05")
self.assertEqual(NextDate(9999, 12, 30), "9999-12-31")
def test_common(self):
self.assertEqual(NextDate(2022, 2, 28), "2022-03-01")
self.assertEqual(NextDate(2022, 4, 30), "2022-05-01")
self.assertEqual(NextDate(2022, 12, 31), "2023-01-01")
def test_invalid_month(self):
self.assertEqual(NextDate(2022, 13, 1), "Invalid input: month should be between 1 and 12")
self.assertEqual(NextDate(2022, 0, 1), "Invalid input: month should be between 1 and 12")
def test_invalid_day(self):
self.assertEqual(NextDate(2022, 2, 29), "Invalid input: day should be between 1 and 28")
self.assertEqual(NextDate(2022, 4, 31), "Invalid input: day should be between 1 and 30")
self.assertEqual(NextDate(2022, 2, -1), "Invalid input: day should be between 1 and 28")
if __name__ == '__main__':
unittest.main()
```
在上述代码中,我们首先定义了一个NextDate函数,该函数接受年、月、日三个参数,返回输入日期的下一个日期。在函数中,我们首先判断输入的年份是否为闰年,然后根据输入的月份和日期判断下一个日期是什么。如果输入的月份或日期不合法,函数将返回相应的错误信息。
接下来,我们定义了一个TestNextDate类,该类继承自unittest.TestCase类,包含了多个测试用例。其中,test_boundary测试了输入日期为边界值时的情况,test_common测试了一些常规情况,test_invalid_month和test_invalid_day测试了输入的月份或日期不合法的情况。
最后,我们使用unittest.main()函数执行测试用例,可以得到测试结果。测试结果应该是所有测试用例都通过。
阅读全文