NextDate(年,月,日)是三个变量的函数。函数返回输入日期的下一个日期。 1.使用python语言撰写程序 ,使用python unitest执行测试用例
时间: 2024-03-09 20:44:14 浏览: 127
可以参考下面的 Python 代码实现 NextDate 函数:
```python
def NextDate(year, month, day):
# 判断日期是否合法
if year < 1812 or year > 2012 or month < 1 or month > 12 or day < 1 or day > 31:
return "Invalid input date!"
if month == 2:
# 如果是二月份,需要特殊判断闰年
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
if day > 29:
return "Invalid input date!"
elif day > 28:
return "Invalid input date!"
elif month in [4, 6, 9, 11]:
# 如果是4、6、9、11月份,只有30天
if day > 30:
return "Invalid input date!"
else:
# 其他月份都是31天
if day > 31:
return "Invalid input date!"
# 计算下一个日期
if day < 28:
return year, month, day + 1
elif month == 2 and day == 28:
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
return year, month, 29
else:
return year, month + 1, 1
elif day == 30 and month in [4, 6, 9, 11]:
return year, month + 1, 1
elif day == 31 and month == 12:
return year + 1, 1, 1
else:
return year, month + 1, 1
```
然后可以使用 Python unittest 模块来执行测试用例,示例代码如下:
```python
import unittest
class TestNextDate(unittest.TestCase):
def test_valid_date(self):
self.assertEqual(NextDate(2021, 6, 30), (2021, 7, 1))
self.assertEqual(NextDate(2021, 2, 28), (2021, 3, 1))
self.assertEqual(NextDate(2020, 2, 28), (2020, 2, 29))
self.assertEqual(NextDate(2020, 12, 31), (2021, 1, 1))
def test_invalid_date(self):
self.assertEqual(NextDate(2021, 6, 31), "Invalid input date!")
self.assertEqual(NextDate(2021, 2, 29), "Invalid input date!")
self.assertEqual(NextDate(2021, 13, 1), "Invalid input date!")
self.assertEqual(NextDate(1811, 1, 1), "Invalid input date!")
if __name__ == '__main__':
unittest.main()
```
上面这个测试用例分为两个部分,一个是针对合法日期的测试,一个是针对非法日期的测试。可以通过运行 `python3 -m unittest` 命令来执行测试用例。
阅读全文