- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
如果返回的日期时间对象不断变化,如何模拟该对象?
例如,我有一些代码可以查询 api、获取一些时间序列数据并将其作为一系列日期时间对象返回。
因此查询 api 的返回数据如下所示:
{
'from_date': 1497881400000.0,
'group_by': [],
'message': '',
'query': 'avg:system.load.norm.5{role:lb}',
'res_type': 'time_series',
'resp_version': 1,
'series': [{'aggr': 'avg',
'attributes': {},
'display_name': 'system.load.norm.5',
'end': 1497709799000,
'expression': 'avg:system.load.norm.5{role:lb}',
'interval': 1,
'length': 60,
'metric':
'avg:system.load.norm.5{role:lb}',
'pointlist': [[1497881400000.0,
0.06923198629355053],
[.. 60 more points]],
'query_index': 0,
'scope': 'role:lb',
'start': 1497709742000,
'unit': [None, None]}],
'status': 'ok',
'to_date': 1497709800000
}
我的代码执行以下操作:
from typing import NamedTuple
class SampleMetric(NamedTuple):
query: str
time: datetime.datetime
value: int
pointlist = api_query['series'][0]['pointlist']
return [SampleMetric(query=metric,
time=datetime.datetime.fromtimestamp(
point[0] / 1000),
value=point[1]) for point in pointlist]
在上述 api 数据的情况下,它看起来像这样:
[SampleMetric(query='avg:system.load.norm.5{role:lb}', time=datetime.datetime(2017, 10, 20, 11, 2), value=231.8605833053589),
SampleMetric(query='avg:system.load.norm.5{role:lb}', time=datetime.datetime(2017, 10, 20, 11, 3), value=243.17432022094727),...]
因此,我可以轻松创建一个模拟 api 对象,该对象返回一个字典,就像上面的示例一样,但我真的很难模拟返回的不断变化的日期时间对象。
即time=datetime.datetime(2017, 10, 20, 11, 2)
任何人都可以给我任何关于如何做到这一点的想法吗?目前,我已经通过在返回数据中只包含一个时间序列点并对时间值进行硬编码来解决这个问题,但我觉得这并不是真正的真实世界测试,因为它应该返回 60 个结果。
请忽略此示例中使用的实际值,我知道它们是错误的,但这仅用于说明目的,因为我正在努力解释我的意思。
最佳答案
我不确定你所说的“不断变化”到底是什么意思,所以我将采取两个猜测并回答这两个猜测。
我的第一个猜测是,您想知道当结果取决于当前时间时如何编写单元测试。这使得输出不断变化,因此测试很难编写。
为了解决这个问题,我要么将当前时间作为显式输入参数传递给我正在测试的代码,要么模拟 datetime.now()
方法。这样,单元测试总是基于相同的时间进行计算,并且应该总是得到相同的结果。这也使得测试有趣的边缘情况变得更加容易,例如夏令时的变化。您可以为每个有趣的场景编写一个单独的测试用例,每个场景都有不同的“当前时间”。
我的第二个猜测是,您询问如何为输入数据创建一组 60 个不同的日期时间值。我可能会为前几个条目计算几个有趣的值,然后使用 for
循环或 range()
表达式生成其余的值。
关于python - py.test : Mocking a datetime object that is constantly changing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46847975/
我有一段代码是这样的: while(count = inputStream.readLine()) != null) { //do something } 在单元测试用例中,我正在模拟 inp
我有一段代码是这样的: while(count = inputStream.readLine()) != null) { //do something } 在单元测试用例中,我正在模拟 inp
假设我在文件中具有以下命名导出 customer.ts export const saveDetails = ()=>{} export const loadDetails = ()=>{} 假设我在
我一直试图绕过dart的模拟库,但似乎我仍然不明白。 在我的库中,我有一个对外部资源的HTTP请求,我想以此模拟它不要一直依赖外部资源。 我的库中的主类如下所示: SampleClass(String
使用 postman 模拟服务器存在问题。它不响应具有路由参数的请求。例如,我的 uri 如下所示: PUT : {{server_url}}/order/{id} 但是当我以这种方式调用模拟服务器时
将任何转换器或空属性转换添加到 Jest 配置时,模拟无法正常工作。下面是简单的代码。 Jest 配置: "transform": { any regex: any transformer } 模块说
我最近一直在做一个项目,该项目已经开始变得相当依赖,并且一直在探索使用 AutoMocking 容器来清理我的测试并使其不那么脆弱的想法。 我听说过 TDD/BDD 纯粹主义者反对使用它们的论点,例如
有谁知道为什么 UsernameExists 不会返回 True。我的语法一定在某个地方搞砸了。 [TestMethod()] public void GenerateUsername
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 10年前关闭。 Improve this qu
我得到一个 Moq 对象以在连续调用方法时返回不同的值。这是通过此扩展方法完成的: public static void ReturnsInOrder(this ISetup setup, param
rhino-mocks stub 和这里的期望有什么区别:在我看来它们的行为完全相同? mockContext.Stub(x => x.Find()) .Return(new List()
我正在尝试模拟方法 extra_get() 的调用,该方法通常返回一个字典列表。据我从模拟docs了解,如果我想返回iterable,我应该设置side_effect参数。 client.extra_
在我的 CentOS 6.2 机器的/var/lib/mock 文件夹下,我可以看到目标构建操作系统中的所有初始应用程序。如果我想添加 JDK 作为额外的应用程序,我该怎么做?谢谢! 最佳答案 只需将
我正在寻找一种让 stub 的返回值取决于其输入的干净方法。 目前我正在使用以下方法,但效果不佳。 metadataLogic.Expect(x => x.GetMake(args.Vehicle1.
我正在设置调用构建和执行查询的方法的期望。我想询问所用参数的属性。这可能吗 using (mocks.Record()) { Expect.Call(connection.Retrieve(S
有没有人有一个使用 Rhino Mocks 和 NInject 的自动模拟容器的实现? 最佳答案 好的,我使用 Moq 集成作为起点自己构建了一个。这很简单。你需要这 3 个类: public cla
使用后@patch在我的装饰器上它不再起作用了。我想进行一个失败并引发异常的调用,以便我可以检查我的装饰器是否正在捕获此异常,并正在调用某个函数。 mock do_sth_in_db让它引发异常是很容
谁能告诉我为什么下面的测试没有失败? [Test] public void uhh_what() { var a = MockRepository.GenerateMock(); a.
我找不到 Moq 和 Rhino 的具体功能比较。所有的问题都是“你更喜欢哪个以及为什么”,或者“这是你如何在 rhino 中进行简单的模拟以及如何在最小起订量中完成的”。 我在任何地方都找不到深入的
我正在尝试模拟数据存储库对象,但在 MockRepository 上设置期望后,它每次都返回 null。我的代码如下: [测试] 公共(public)无效 GetById_NotNull() { 预
我是一名优秀的程序员,十分优秀!