让python测试穿越时间
freezegun-vinta的Python项目详细描述
冻结枪:让您的python测试穿越时间
================================
图片::https://secure.travis-ci.org/spulec/freezegun.png?branch=master
:目标:https://travis ci.org/spulec/freezegun
…图片::https://coveralls.io/repos/spulec/freezegun/badge.png?branch=master
:target:https://coveralls.io/r/spulec/freezegun
freezegun是一个库,它允许您的python测试通过模拟datetime模块来穿越时间。
usage
----
一旦调用了decorator或context manager,所有对datetime的调用.date time.now()、datetime.datetime.utcnow()、datetime.date.today()、time.time()、time.localtime()、time.gmtime()和time.strftime()将返回已冻结的时间。
代码块::python
testcase-为每个测试冻结,从setupClass的开始到teardownclass的结束
@freeze_time("1955-11-12")
class mytests(unittest.testcase):
def test_the_class(self):
assert datetime.datetime.now()==datetime.datetime(1955,11,12)
或任何其他类-冻结在每个可调用的类周围(在任何情况下都可能不起作用)
@freeze_time("2012-01-14")
类测试程序(对象):
def test_the_class(self):
assert datetime.datetime.now()==datetime.datetime(2012,1,14)
上下文管理器代码块::python
=datetime.datetime(2012,1,14)
带冻结时间("2012-01-14"):
断言datetime.datetime.now()==datetime.datetime(2012,1,14)
断言datetime.datetime.now()!=日期时间。日期时间(2012,1,14)
代码块::python
from freezegun import freeze\u time
freezer=freeze\u time("2012-01-14 12:00:01")
freezer.start()
assert datetime.datetime.now()==datetime.datetime(2012,1,14,12,0,1)
freezer.stop()
timezones
~代码块::python
from freezegun import freeze-time
@freeze-time("2012-01-14 03:21:34",tz-u offset=-4)
def test():
assert datetime.datetime.utcnow()==datetime.datetime(2012,1,14,3,21,34)
assert datetime.datetime.now()==datetime.datetime(2012,1,13,23,21,34)
代码块::python
@freeze\u time("2012年1月14日")
def test\u nice\u datetime():
assert datetime.datetime.now()==datetime.datetime(2012年1月14日)
~给定
值,但时间会一直滴答作响。这是默认
参数的替代选项,该参数将使时间停止。
…代码块::python
@freeze\u time("2020年1月14日",tick=true)
def test\u nice\u datetime():
assert datetime.datetime.now()>;datetime.datetime(2020年,1月14日)
manual ticks
~~~~~~~~~~~~~~~~
freezgun允许手动转发时间。
代码块::python
def test_manual_increment():
initial_datetime=datetime.datetime(year=1,month=7,day=12,
小时=15,分钟=6,秒=3)
冻结时间(初始日期时间)为冻结日期时间:
断言冻结日期时间()==初始日期时间
e.timedelta(seconds=1)
断言冻结日期时间()==初始日期时间
冻结日期时间。tick(delta=datetime.timedelta(seconds=10))
初始日期时间+=日期时间。timedelta(seconds=10)
断言冻结日期时间()==初始日期时间
移动时间以指定日期时间
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
freezegun允许将时间移动到特定日期
。代码块::python
def test_move_to():
初始日期时间=日期时间。日期时间(年=1,月=7,日=12,
小时=15,分钟=6,秒=3)
其他日期时间=日期时间。日期时间(年=2,月=8,日=13,
小时=14,分钟=5,秒=0)
冻结时间(初始日期时间)为冻结日期时间:
断言冻结日期时间()==初始日期时间
冻结日期时间。移动到(其他日期时间)
断言冻结日期时间()==其他日期时间ATETIME
冻结日期时间。移动到(初始日期时间)
断言冻结日期时间()==初始日期时间
``移动到``的参数可以是任何有效的``冻结时间``日期(字符串、日期、日期时间)。
那个冻结枪不会修改默认参数。以下代码将
打印当前日期。有关原因,请参见"here<;http://docs.python guide.org/en/latest/writing/gotchas/"可变默认参数"`"。代码块::python
Reezegun,简单地说:
…代码块::bash
$pip在debian(测试和不稳定)系统上安装freezegun
…代码块::bash
$sudo apt get install python freezegun
================================
图片::https://secure.travis-ci.org/spulec/freezegun.png?branch=master
:目标:https://travis ci.org/spulec/freezegun
…图片::https://coveralls.io/repos/spulec/freezegun/badge.png?branch=master
:target:https://coveralls.io/r/spulec/freezegun
freezegun是一个库,它允许您的python测试通过模拟datetime模块来穿越时间。
usage
----
一旦调用了decorator或context manager,所有对datetime的调用.date time.now()、datetime.datetime.utcnow()、datetime.date.today()、time.time()、time.localtime()、time.gmtime()和time.strftime()将返回已冻结的时间。
代码块::python
testcase-为每个测试冻结,从setupClass的开始到teardownclass的结束
@freeze_time("1955-11-12")
class mytests(unittest.testcase):
def test_the_class(self):
assert datetime.datetime.now()==datetime.datetime(1955,11,12)
或任何其他类-冻结在每个可调用的类周围(在任何情况下都可能不起作用)
@freeze_time("2012-01-14")
类测试程序(对象):
def test_the_class(self):
assert datetime.datetime.now()==datetime.datetime(2012,1,14)
上下文管理器代码块::python
=datetime.datetime(2012,1,14)
带冻结时间("2012-01-14"):
断言datetime.datetime.now()==datetime.datetime(2012,1,14)
断言datetime.datetime.now()!=日期时间。日期时间(2012,1,14)
代码块::python
from freezegun import freeze\u time
freezer=freeze\u time("2012-01-14 12:00:01")
freezer.start()
assert datetime.datetime.now()==datetime.datetime(2012,1,14,12,0,1)
freezer.stop()
timezones
~代码块::python
from freezegun import freeze-time
@freeze-time("2012-01-14 03:21:34",tz-u offset=-4)
def test():
assert datetime.datetime.utcnow()==datetime.datetime(2012,1,14,3,21,34)
assert datetime.datetime.now()==datetime.datetime(2012,1,13,23,21,34)
代码块::python
@freeze\u time("2012年1月14日")
def test\u nice\u datetime():
assert datetime.datetime.now()==datetime.datetime(2012年1月14日)
值,但时间会一直滴答作响。这是默认
参数的替代选项,该参数将使时间停止。
…代码块::python
@freeze\u time("2020年1月14日",tick=true)
def test\u nice\u datetime():
assert datetime.datetime.now()>;datetime.datetime(2020年,1月14日)
manual ticks
~~~~~~~~~~~~~~~~
freezgun允许手动转发时间。
代码块::python
def test_manual_increment():
initial_datetime=datetime.datetime(year=1,month=7,day=12,
小时=15,分钟=6,秒=3)
冻结时间(初始日期时间)为冻结日期时间:
断言冻结日期时间()==初始日期时间
e.timedelta(seconds=1)
断言冻结日期时间()==初始日期时间
冻结日期时间。tick(delta=datetime.timedelta(seconds=10))
初始日期时间+=日期时间。timedelta(seconds=10)
断言冻结日期时间()==初始日期时间
移动时间以指定日期时间
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
freezegun允许将时间移动到特定日期
。代码块::python
def test_move_to():
初始日期时间=日期时间。日期时间(年=1,月=7,日=12,
小时=15,分钟=6,秒=3)
其他日期时间=日期时间。日期时间(年=2,月=8,日=13,
小时=14,分钟=5,秒=0)
冻结时间(初始日期时间)为冻结日期时间:
断言冻结日期时间()==初始日期时间
冻结日期时间。移动到(其他日期时间)
断言冻结日期时间()==其他日期时间ATETIME
冻结日期时间。移动到(初始日期时间)
断言冻结日期时间()==初始日期时间
``移动到``的参数可以是任何有效的``冻结时间``日期(字符串、日期、日期时间)。
那个冻结枪不会修改默认参数。以下代码将
打印当前日期。有关原因,请参见"here<;http://docs.python guide.org/en/latest/writing/gotchas/"可变默认参数"`"。代码块::python
Reezegun,简单地说:
…代码块::bash
$pip在debian(测试和不稳定)系统上安装freezegun
…代码块::bash
$sudo apt get install python freezegun