NextDate(年,月,日)是三个变量的函数。函数返回输入日期的下一个日期。 1.使用python语言撰写程序 ,使用python unitest执行测试用例
时间: 2024-03-08 19:49:43 浏览: 13
以下是一个使用 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 "输入日期不合法!"
# 判断是否为闰年
is_leap_year = False
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
is_leap_year = True
else:
is_leap_year = True
# 计算下一个日期
if month == 2:
if is_leap_year:
if day == 29:
next_day = 1
next_month = 3
elif day > 29:
return "输入日期不合法!"
else:
next_day = day + 1
next_month = month
else:
if day == 28:
next_day = 1
next_month = 3
elif day > 28:
return "输入日期不合法!"
else:
next_day = day + 1
next_month = month
elif month in [4, 6, 9, 11]:
if day == 30:
next_day = 1
next_month = month + 1
elif day > 30:
return "输入日期不合法!"
else:
next_day = day + 1
next_month = month
else:
if day == 31:
if month == 12:
next_day = 1
next_month = 1
next_year = year + 1
else:
next_day = 1
next_month = month + 1
elif day > 31:
return "输入日期不合法!"
else:
next_day = day + 1
next_month = month
# 如果未计算出下一年,则直接返回结果
if 'next_year' not in locals():
return '{0}-{1}-{2}'.format(year, next_month, next_day)
else:
return '{0}-{1}-{2}'.format(next_year, next_month, next_day)
```
接下来,我们可以使用 Python 的 `unittest` 模块来编写测试用例并执行测试:
```python
import unittest
class TestNextDate(unittest.TestCase):
def test_next_date(self):
# 测试合法日期的下一个日期
self.assertEqual(NextDate(2012, 12, 31), '2013-1-1')
self.assertEqual(NextDate(2012, 2, 28), '2012-2-29')
self.assertEqual(NextDate(2011, 2, 28), '2011-3-1')
self.assertEqual(NextDate(2011, 4, 30), '2011-5-1')
self.assertEqual(NextDate(2011, 12, 31), '2012-1-1')
# 测试非法日期
self.assertEqual(NextDate(1811, 1, 1), '输入日期不合法!')
self.assertEqual(NextDate(2013, 1, 1), '输入日期不合法!')
self.assertEqual(NextDate(2012, 2, 29), '输入日期不合法!')
self.assertEqual(NextDate(2011, 2, 29), '输入日期不合法!')
self.assertEqual(NextDate(2011, 4, 31), '输入日期不合法!')
self.assertEqual(NextDate(2011, 13, 1), '输入日期不合法!')
if __name__ == '__main__':
unittest.main()
```
在执行测试时,我们可以使用以下命令:
```
python test_next_date.py
```
输出结果将显示测试用例的执行情况。
阅读全文