- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试测试在 App Engine 上运行的应用程序。我正在使用 the Testbed framework ,到目前为止,除了以下意外行为外,它就像一个魅力:
像这样的测试将工作得很好(没有框架的简化版本):
from google.appengine.ext import db, testbed
testbed = testbed.Testbed()
testbed.activate()
testbed.init_datastore_v3_stub()
class Foo(db.Model):
pass
# now for the tests:
key = Foo().put()
assert key == db.Key.from_path('Foo', key.id())
assert Foo.all(keys_only=True).get() == db.Key.from_path('Foo', key.id())
assert db.get(db.Key.from_path('Foo', key.id())) # fails!
testbed.deactivate()
但是,以下将失败(同样是简化版):
from google.appengine.ext import db, testbed
testbed = testbed.Testbed()
testbed.activate()
testbed.init_datastore_v3_stub()
from myapp.models import Foo
# now for the tests:
key = Foo().put()
assert key == db.Key.from_path('Foo', key.id()) # fails!
assert Foo.all(keys_only=True).get() == db.Key.from_path('Foo', key.id()) # fails!
assert db.get(db.Key.from_path('Foo', key.id())) # fails!
# however, the following will succeed:
assert key == db.Key.from_path('Model', key.id())
assert Foo.all(keys_only=True).get() == db.Key.from_path('Model', key.id())
assert db.get(key)
testbed.deactivate()
模型名称在测试过程中在哪里消失了?为什么它只发生在导入的模块上?
编辑:
谢谢 proppy , 拼写错误已修复。
Nick Johnson ,让我尝试更好地解释它。
当我从 testbed
查询结果时数据存储 stub ,我得到一个实体,就像我期望的那样。但是当我调用 .key()
该实体上的方法,我得到类似 datastore_types.Key.from_path(u'Model', 1L, _app=u'testbed-test')
的东西, 而 Model
显然不是我的实体的正确类型。
当我尝试获取该键 ( datastore_types.Key.from_path(u'Model', 1L, _app=u'testbed-test')
) 的实体时,它工作正常。
问题是,当我只知道 id
一个数据存储实体,我尝试使用 db.Key.from_path(...)
手动构建 key .
比如kind应该是User
,所以我可以使用 db.Key.from_path('User', 1)
构造 key .但是我无法使用该 key 从数据存储中获取实体。但是,我可以使用 db.Key.from_path('Model', 1)
,但是,正如我所说,Model
不是正确的数据存储类型。
换句话说:
from myapp.models import User
User(email='dont@write.us').kind() # returns 'Model', not 'User'!
请注意,这种意外行为不会发生在生产或开发服务器中,仅在使用 testbed
时才会发生。 , 且仅当 db.Model
子类在我的应用程序代码中定义(即不在测试用例本身中)。
我没有使用 Django,我正在使用 Pyramid 进行遍历,但是我在这里运行的单元测试没有调用任何特定于框架的代码。
注意
我还没有用
ndb
试过这个然而
ndb
也发生了同样的事情还有..
编辑 2:
显然我没有注意到我所有的类都是 google.appengine.ext.db.polymodel.PolyModel
的子类子类,所以键实际上被正确设置为 Model
, 因为种类是 Model
在所有PolyModel
子类。
最佳答案
为了回答我自己的问题,这个问题是由我的项目中名为 migrations.py
的文件引起的,该文件使用具有不同属性的类重新定义了我的模型。当我运行测试时,nose
试图导入所有可用文件以发布覆盖率结果,这导致模块定义冲突,从而造成所有困惑。
关于python - Testbed 中的数据存储 key 不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8888427/
我有一个组件,它有两个依赖项:一个是 LOCALE_ID在 Angular 中全局定义,另一种是语言,在组件中定义为 { provide: LANGUAGE_TOKEN, useValue: navi
我正在尝试测试一个具有依赖性的简单组件。我试图模拟这种依赖关系,但真正的服务仍在构建中。有人能看出我错过了什么吗? 这是我的组件: import { Component } from "@angula
import java.util.Random; public class TestBed { public static void main(String a[]) { // creatin
我目前正在尝试为在其 html 中使用另一个组件标记的组件编写一组单元测试。 但是我似乎无法编译这个其他组件。我尝试了几种使用 NO_ERROR_SCHEMA 的方
我有 MainComponent,它使用 ChildComponentA 作为 @ViewChild。 MainComponent 正在调用 ChildComponentA 上的方法。 我想编写一个模
当对测试夹具使用以下配置时,我收到无法找到标签的投诉。直接在 AppModule 中替换 MockSelectionToolComponent 工作正常,所以一定是别的东西...... // Add
在基于 Angular 8.1.2 和 Ionic 4 的应用程序项目中,我为 typescript 中的一个简单类编写了单元测试。这与“npm test”配合得很好。为了准备需要模拟的更复杂的类,我
可以说我有一个如下所示的测试配置 TestBed.configureTestingModule({ imports: [HttpClientTestingModule],
我正在尝试测试在 App Engine 上运行的应用程序。我正在使用 the Testbed framework ,到目前为止,除了以下意外行为外,它就像一个魅力: 像这样的测试将工作得很好(没有框架
如何使用另一个提供者的实例在 TestBed.configureTestingModule() 中实例化一个提供者? 一个例子(显然不起作用): beforeEach(() => { TestBe
我正在使用 TestBed 进行 Angular 2+ 单元测试。场景,我想验证我的组件,即伪元素的颜色。 组件.ts label::before { right: 0;
我想了解这个 testb 指令 (x86-64) 会做什么。 testb $1, %al 这里 $1 的值(value)是多少。是全部 (0xFF) 还是单个 1 (0x1)? 程序集由 clang
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我正在编写 TestBed 单元测试。 有一个特定的组件,它是被测组件的子组件。该子组件在测试运行时会导致错误。该子组件与测试本身无关;这只会引起问题。 我想用一个虚拟的替换它,或者阻止它被添加。 有
我是 Angular 2 的 Jasmine 新手,在编写测试用例时我经常使用 TestBed 对象并收到错误:请在测试前调用“TestBed.compileComponents”。 如何解决这个错误
我们正在使用 TestBed.overrideComponent(CoolComponent, { set: { template: 'i am the fake componen
我使用 Angular TestBed 进行了一些单元测试。即使测试非常简单,它们运行起来也非常慢(平均每秒 1 个测试 Assets )。 即使在重新阅读 Angular 文档后,我也找不到性能如此
我有一个组件,它接收组件的组件类以动态创建为子组件。 let componentFactory = this.componentFactoryResolver.resolveComponentFact
我正在使用带有 Jest 的 Angular 7 并且正在模拟组件的提供者。很多时候我需要更改在 TestBed 之后注入(inject)到组件中的内容。已编译,并且使用此代码执行此操作没有任何问题:
我实际上正在尝试构建一个 flutter 应用程序窗口,但我收到了这条错误消息: flutter build windows CMake Error:
我是一名优秀的程序员,十分优秀!