让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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应用程序不是在Eclipse中运行,而是在命令行中运行   swing Java图形组件问题。似乎找不到错误   我需要键盘。close();让代码正常工作?   Springboot中的java HttpSession   抽象语法树我想添加一个语句。我试图解析它,java解析器异常被抛出。如何克服它?   java Hibernate:清理会话   具有不连续子集的java划分问题   java正则表达式查找最后一个冒号后的字符串   java从SpringShell执行OS命令   Java扫描器字符串输入   java字符串索引越界异常(charAt)   java执行器服务终止被卡住   Springockito没有继承java@ContextConfiguration   java如何为一个servlet映射多个url   java安卓获取命令的stderr   java生成类型。表:数据库中的大数字   安卓 Getter Setter返回NothingJava